考虑此代码来读取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个条目作为列表。
我肯定错过了什么。
答案 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')