到目前为止,我一直在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中项目的示例:打印项目
['\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']
答案 0 :(得分:4)
我看到的唯一可能性是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文件,以查看空行是否正常,或者那里的数据是否有问题。