Python奇怪列表行为

时间:2016-05-21 17:42:34

标签: python csv

我尝试使用csv模块更新csv文件,但我发现了一些奇怪的行为:

考虑此代码来读取csv

import csv
reader = csv.reader(open('/Users/r2-d2/Desktop/output.csv', 'rb'), delimiter = '\t')

以这种方式打印

for row in reader:
    print row

这段代码完全有效,我得到多个列表,其中每个列表代表我的一行cvs

现在考虑以下代码:

for row in reader:
    print row[0]

此代码不适用于我不知道的原因。 (IndexError:列表索引超出范围)编辑:row [0]为空,但任何其他索引即使非空也会出错

此代码

for row in reader:
    print row[:3]

按预期工作,我将每行的前3个条目作为列表。

我肯定错过了什么。

1 个答案:

答案 0 :(得分:2)

您的部分行必须为空。

my_list[0]
当my_list为空时

抛出IndexError

my_list[:3]永远不会破坏,因为它会尝试为您提供所需的数据片段,但如果my_list比最后请求的索引短,则会返回更少。

尝试:

for row in reader:
    if row:  # identical to if(len(row))
        print row[0]

修改

我认为您应该尝试在标准模式下打开文件,而不是以二进制模式打开文件:

reader = csv.reader(open('/Users/r2-d2/Desktop/output.csv', 'r'), delimiter = '\t')