1

アップロードされたファイルとしてcsvデータを受け入れるアプリケーションを構築しています。

これが私の見解の関連部分です:

def climate_upload(request):
    ...
    reader = csv.reader(file, delimiter=';')    # news csv reader instance 
    next(reader)    # skip header row

    for line in reader:
        if not line:
            continue    
        report = site_name
        report.year = line[1]
        report.month = line[2]
        ...
        report.save()
    file.close()    # close file
    ...

したがって、これは次のようなデータで正常に機能します。

;"headers"
;2012;5;2012-06-01;27.1;24.5;29.8;26.8;85;0.8
;2012;5;2012-06-02;27.1;24.5;29.8;26.8;85;0.8

しかし、これで失敗します:

"headers"
2012;5;2012-06-01;27.1;24.5;29.8;26.8;85;0.8
2012;5;2012-06-02;27.1;24.5;29.8;26.8;85;0.8

各行に最初の区切り文字がないことに注意してください。

残念ながら、MSExcelは2番目のバージョンを吐き出しているようです。readerこれは、改行を区切り文字として認識していないと思います。\n区切り文字としても受け入れるように強制するリーダー付きのフラグはあり;ますか?

どんな助けでも大歓迎です。

4

1 に答える 1

2

区切り文字や改行は問題ではありません-あなたは間違って数えています。

リストの最初の要素にはインデックスがあります0。だからそれは

report.year = line[0]
report.month = line[1]
# etc.

List index out of range最後の要素()で例外が発生していると思いますline[9]

于 2012-07-18T17:54:21.667 に答える