python - 访问从 CSV 文件读取的行时列表索引超出范围

标签 python csv python-2.7

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

相关文章:

python - 在起点和终点之间打印线条

python - 为什么在训练过程中多次缩小参数会有助于 Progressive GAN 中所有权重的学习速度相同?

python - 如何更改 Requests-OAuthlib 中的时间戳和随机数?

json - 如何使用 json2csv nodejs 模块将 JSON 对象解析为 CSV 文件

c++ - 在自定义库中操作二维 C++ 数组 - 获取行数?

python - 获取每个 json 模式错误的属性

python - 处理 urllib2 返回的 badstatusline(line)?

Python 快速从 int 到 string 的转换

python - TCP 线程 python 服务器未按预期处理信号

C# 将 csv 转换为 xls(使用现有的 csv 文件)