访问从CSV-fi读取的行时,列表索引超出范围

2024-05-23 17:30:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用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)

然后,我尝试循环该文件,使用以下命令从每行中提取第一个名称:

^{pr2}$

我收到以下错误消息:

Traceback (most recent call last):
File "", line 3, in module
s=g[0]
IndexError: list index out of range

有没有人知道我为什么会收到这个错误消息,以及如何更正它?在


Tags: 文件csvimport命令消息ru错误sys
2条回答

row和g指向一个空列表。我不知道这是否一定意味着它在文件中是空行,因为csv可能有其他问题。在

line_counter = 0
for row in f:
    line_counter = line_counter + 1
    g=row
    if len(g) == 0:
        print "line",line_counter,"may be empty or malformed"
        continue

或者,正如Martijn指出的,Python的方法是使用枚举:

^{pr2}$

您应该而不是以通用换行模式(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)等差异。在

第三,如果您想选择一个字符串的一部分,直到一个分隔符,如逗号,使用^{}^{}

^{pr2}$

相关问题 更多 >