7

CSV ファイルの読み取り中に次のエラーが発生します (ヘッダーなし、3 列、2 番目と 3 番目の文字列):

Traceback (most recent call last):
File "C:\Python32\fantasy.py", line 72, in module>
some=row[1]
IndexError: list index out of range*    

以下はコードの一部です。行き詰まるのはばかげて単純なことですが、それがどのように機能しないかについては、私はただ空白です. 私はコーディングは初めてですが、以前に csv モジュールを扱ったことがあり、この部分で問題が発生したことはありません。メモ帳でテスト csv ファイルを作成して、同じコードから読み取られるかどうかを確認しました。知らない。

import csv
##############some other code, working good and I believe not relevant to this problem
file=open(r"C:\Users\me\Desktop\file-2.csv","r")
reader=csv.reader(file, delimiter=',', quotechar='"')

for row in reader:
    some=row[1]
4

4 に答える 4

18

空白行を確認してみてください。fileまた、変数名としての使用は避けてください。"r"open のデフォルトモードです。

import csv

with open(r"C:\Users\me\Desktop\file-2.csv") as f:
     reader = csv.reader(f, delimiter=',', quotechar='"')
     for row in reader:
        if row:
            some=row[1]
于 2012-10-24T09:59:41.567 に答える
4

空の行か何かがあるようです。デフォルトでは、forループの各反復は、csvファイルから1行のテキストを取得します。そのテキスト行は改行文字で終わります。したがって、空白行がある場合、リーダーはそれを次のように読み取ります[]。

これを行うと、私が何を意味するかがわかります。

for row in reader:
    print(repr(row))
    some = row[1]

印刷される最後の行の長さが2以上ではないことがわかります。

これを修正するためにできることがいくつかあります。

  1. いくつかのクリーンアップスクリプトにファイルを渡して、空白行を削除します
  2. リーダーを呼び出すときに認識される改行文字を変更する
于 2012-10-24T09:54:51.897 に答える
0

私も以前にこのエラーが発生しました。私の問題は愚かで回避可能でした。私は別のプログラムからいくつかのコードをコピーし、区切り文字を変更しませんでした (私の場合はパイプからコンマへ)。

于 2018-07-19T17:08:27.943 に答える