【发布时间】:2013-11-09 22:18:28
【问题描述】:
从包含两列和 36 行长的 CSV 文件读取时,我到达第 25 行并抛出错误。我已经在两个不同的编辑器中签入了文件,并且那里没有换行符或任何东西。我很困惑,因为逻辑在我看来是合理的。
Linked here 是 CSV 文件。
我的回溯(包括最后几行打印)如下:
('Line', 23, 'http://arstechnica.com/gadgets/2013/11/samsungs-growth-isnt-in-your-hand-its-in-your-laundry-room/')
('Line', 24, 'http://arstechnica.com/security/2013/11/now-theres-a-bug-bounty-program-for-the-whole-internet/')
Traceback (most recent call last):
File "getArticleInformation.py", line 69, in <module>
printCSV()
File "getArticleInformation.py", line 63, in printCSV
print ("Line", i, row[1])
IndexError: list index out of range
打印方法的工作方法如下:
def printCSV():
f = csv.reader(open("ArticleLocationCache.csv", "rb"))
i = 1
print (i)
for row in f:
print ("Line", i, row[1])
i = i + 1
在识别我的错误方面的任何帮助都将是惊人的。在过去的一个小时里,我一直在努力解决它。
【问题讨论】:
-
用您粘贴的数据进行的测试对我有用。
-
与我无法重现的索引错误无关,您的代码中还有其他一些可以改进的地方。首先,使用
with语句来处理您正在打开的文件。接下来,使用enumerate生成i值作为循环的一部分,而不是手动处理它。最后,确保您打算打印一个元组(如果您希望print在 Python 2 中作为函数工作,请尝试将from __future__ import print_function放在文件顶部)。 -
谢谢您的建议,先生!