3

重複の可能性:
適切なエンコーディングでファイルを自動的に開く

私のコード:

import csv

def handle_uploaded_file(f):
  dataReader = csv.reader(f, delimiter=';', quotechar='"')

for row in dataReader:
  do_sth

問題は、csvがUTF-8でエンコードされている場合にのみうまく機能することです。iso-8859-2またはwindows-1250エンコーディングを提供するには何を変更する必要がありますか?(最善の解決策はエンコーディングを自動認識することですが、手動変換も許容されます)

4

3 に答える 3

5

今のところ解決策:

def reencode(file):
    for line in file:
        yield line.decode('windows-1250').encode('utf-8')

csv_reader = csv.reader(reencode(open(filepath)), delimiter=";",quotechar='"')
于 2012-05-19T13:53:22.367 に答える
3

csvモジュールのドキュメントの例のセクションをご覧ください。最後に、エンコーディングを指定して、まさにその目的に使用できるクラスを見つけることができます。

于 2012-05-17T20:53:29.230 に答える
1

codecs.openで開いたファイル記述子を渡します。エンコーディングを自動認識できないか、うまくいきません。エンコーディングを推測するには、chardetを使用できます。

于 2012-05-17T20:52:59.450 に答える