2

2 列 36 行の CSV ファイルを読み込んでいるときに、25 行目に到達するとエラーがスローされます。2 つの異なるエディターでファイルをチェックインしましたが、改行などはありません。論理が正しいように思えるので、私は困惑しています。

ここにリンクされているのは 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時間、それを解決しようとしてきました。

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 に答える