从csv打印时的IndexError

时间:2013-11-09 22:18:28

标签: python csv

从两列和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

任何帮助识别我的错误都会令人惊讶。我一直试图在最后一小时内完成它。

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