Python 3:列出索引问题

问题描述 投票:1回答:1

到目前为止,我一直在使用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']
python
1个回答
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文件以查看空行是否正常或者您的数据是否有问题。

© www.soinside.com 2019 - 2024. All rights reserved.