【发布时间】:2012-10-14 19:36:34
【问题描述】:
我正在尝试在 python 中读取一个 csv 文件。 csv 文件有 1400 行。我使用以下命令打开了 csv 文件:
import csv
import sys
f=csv.reader(open("/Users/Brian/Desktop/timesheets_9_1to10_5small.csv","rU"),
dialect=csv.excel_tab)
然后我尝试使用以下命令遍历文件以从每一行中提取名字:
for row in f:
g=row
s=g[0]
end_of_first_name=s.find(",")
first_name=s[0:end_of_first_name]
我收到以下错误消息:
回溯(最近一次通话最后一次):
文件“”,第 3 行,在模块中
s=g[0]
IndexError: 列表索引超出范围
有谁知道我为什么会收到此错误消息以及如何更正它?
【问题讨论】:
-
您是否尝试在循环中添加
print row以查看它认为的行是什么?其中一个(可能在最后)是空的。顺便说一句,我不明白你的end_of_first_name逻辑(除非我刚刚想到,那里有多个名字,并且“第一”你不是指“约翰史密斯”中的“约翰”,你的意思是“约翰”在“约翰,弗雷德”中。) -
我敢打赌,如果你执行 len(g),它会返回 0。听起来你有一个空行。
-
好主意。我添加了一个打印行,并意识到代码在 csv 文件中的一行深处存在问题。我将尝试找出为什么该行很麻烦。谢谢!
标签: python csv python-2.7