从两列和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
任何帮助识别我的错误都会令人惊讶。我一直试图在最后一小时内完成它。
答案 0 :(得分:2)
简而言之,您正在阅读一行中至少没有2个元素的行。我不确定你想要用一行没有做什么,我怀疑你只是想跳过它。这是一个如何做到这一点的例子:
def printCSV():
f = csv.reader(open("ArticleLocationCache.csv", "rb"))
i = 1
print (i)
for row in f:
if len(row)>=2:
print ("Line", i, row[1])
i = i + 1
查看您的CSV文件,似乎您可能无法正确解析它。作为一个替代方法,找出正在发生的事情,尝试只打印出整行,然后找出它为什么不能正常工作,如下所示:
def printCSV():
f = csv.reader(open("ArticleLocationCache.csv", "rb"))
i = 1
print (i)
for row in f:
print (row)
print ("Line", i, row[1])
i = i + 1