我正在尝试用 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]
我收到以下错误消息:
Traceback (most recent call last):
File "", line 3, in module
s=g[0]
IndexError: list index out of range
有谁知道为什么我会收到此错误消息以及如何纠正它?
最佳答案
您不应该以通用换行模式 (U
) 打开文件。以二进制模式打开文件:
f=csv.reader(open("/Users/Brian/Desktop/timesheets_9_1to10_5small.csv","rb"),
dialect=csv.excel_tab)
CSV 有自己的换行符处理,包括管理引号中的换行符。
接下来,使用 print repr(row)
打印行,以验证您是否获得了预期的输出。使用 repr
而不是常规的字符串表示形式可以让您更多地了解正在处理的对象的类型,突出显示字符串与整数等差异('1'
与 1
)。
第三,如果要选择字符串中直到逗号等分隔符的部分,请使用 .split(delimiter, 1)
或.partition(delimiter)[0]
:
>>> 'John,Jack,Jill'.partition(',')[0]
'John'
关于python - 访问从 CSV 文件读取的行时列表索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12885799/