Python 3:列表索引问题

时间:2019-02-20 00:24:43

标签: python

到目前为止,我一直在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']

1 个答案:

答案 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文件,以查看空行是否正常,或者那里的数据是否有问题。