2

从两列和 36 行长的 CSV 文件中读取时,我到达第 25 行并抛出错误。我已经在两个不同的编辑器中签入了文件,并且那里没有换行符或任何东西。我很困惑,因为逻辑对我来说似乎是合理的。

此处链接的是 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

识别我的错误的任何帮助都将是惊人的。在过去的一个小时里,我一直在努力解决它。

4

1 回答 1

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
于 2013-11-09T22:23:42.060 回答