我想用'。'作为分隔符,但我得到一个“IndexError:列表索引超出范围”错误与下面的代码。如果我删除分隔符部分,代码按我希望的方式工作。知道为什么这个吗?非常感谢提前。
import csv
mags = csv.reader(open("mags.csv","rU"), delimiter='.')
for row in mags:
print [item.lower() for item in [row[index] for index in (1, 0)]]
答案 0 :(得分:2)
也许有一行缺少.
分隔符。
要查看 csv.reader 正在执行的操作,请在其他print-statement之前添加print repr(row)
。这可能会显示一条被解析为零或一个字段的行。
如果数据实际上每行都有一个.
分隔符,那么您的代码可以正常工作:
>>> txt = '''\
tom.smith
ben.cohen
scott.friedman
michael.jones
'''.splitlines()
>>> import csv
>>> for row in csv.reader(txt, delimiter='.'):
print [item.lower() for item in [row[index] for index in (1, 0)]]
['smith', 'tom']
['cohen', 'ben']
['friedman', 'scott']
['jones', 'michael']
可能是您的输入数据有分隔符的逗号,并且您希望输出使用不同的分隔符。方法如下:
>>> txt = '''\
tom,smith
ben,cohen
scott,friedman
michael,jones
'''.splitlines()
>>> for row in csv.reader(txt):
print '.'.join([item.lower() for item in [row[index] for index in (1, 0)]])
smith.tom
cohen.ben
friedman.scott
jones.michael