到目前为止,我一直在使用python 2.7进行编码,并尝试使用python 3
我面临一个问题,即附加到我不理解的列表,并且令我感到困惑
with open('path/AuthorNames.csv' ,'r') as f:
reader = csv.reader(f)
your_list = list(reader) ## this generates [[auther1],[auther2],...]
l2 = []
for item in your_list:
l2.append(item[0])
运行此结果会导致IndexError:列表索引超出范围
为什么?我有一个空列表,我将我的for循环中的项目附加到该列表中,我没有更改现有列表。
是否有一种新的python3列表方法?
your_list中项目的示例:print item
['\ufeffArticle Author']
['Thomas B. Bennettd1 Barry Friedmandd1 Andrew D. Martinddd1 Susan Navarro Smelcer']
['Thomas B. Bennettd1 Barry Friedmandd1 Andrew D. Martinddd1 Susan Navarro Smelcer']
['Thomas B. Bennettd1 Barry Friedmandd1 Andrew D. Martinddd1 Susan Navarro Smelcer']
['Thomas B. Bennettd1 Barry Friedmandd1 Andrew D. Martinddd1 Susan Navarro Smelcer']
['Thomas B. Bennettd1 Barry Friedmandd1 Andrew D. Martinddd1 Susan Navarro Smelcer']
['Thomas B. Bennettd1 Barry Friedmandd1 Andrew D. Martinddd1 Susan Navarro Smelcer']
我看到的唯一可能是your_list中有一个空列表。
尝试:
with open('path/AuthorNames.csv' ,'r') as f:
reader = csv.reader(f)
your_list = list(reader) ## this generates [[auther1],[auther2],...]
l2 = []
for item in your_list:
if item:
l2.append(item[0])
或者列表理解,
l2 = [item[0] for item in your_list if item]
(在这里使用列表理解是@John Coleman的想法,只是在这里添加了这个答案的完整性。)
正如我在评论中写的那样,您可能需要检查您的csv文件以查看空行是否正常或者您的数据是否有问题。