PandasでCSVファイルを読み取るときにUnicodeDecodeErrorが発生する 質問する

PandasでCSVファイルを読み取るときにUnicodeDecodeErrorが発生する 質問する

30,000 個の類似ファイルを処理するプログラムを実行しています。そのうちのランダムな数が停止し、このエラーが発生します...

  File "C:\Importer\src\dfman\importer.py", line 26, in import_chr
    data = pd.read_csv(filepath, names=fields)
  File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 400, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 205, in _read
    return parser.read()
  File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 608, in read
    ret = self._engine.read(nrows)
  File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 1028, in read
    data = self._reader.read(nrows)
  File "parser.pyx", line 706, in pandas.parser.TextReader.read (pandas\parser.c:6745)
  File "parser.pyx", line 728, in pandas.parser.TextReader._read_low_memory (pandas\parser.c:6964)
  File "parser.pyx", line 804, in pandas.parser.TextReader._read_rows (pandas\parser.c:7780)
  File "parser.pyx", line 890, in pandas.parser.TextReader._convert_column_data (pandas\parser.c:8793)
  File "parser.pyx", line 950, in pandas.parser.TextReader._convert_tokens (pandas\parser.c:9484)
  File "parser.pyx", line 1026, in pandas.parser.TextReader._convert_with_dtype (pandas\parser.c:10642)
  File "parser.pyx", line 1046, in pandas.parser.TextReader._string_convert (pandas\parser.c:10853)
  File "parser.pyx", line 1278, in pandas.parser._string_box_utf8 (pandas\parser.c:15657)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xda in position 6: invalid    continuation byte

これらのファイルのソース/作成はすべて同じ場所から行われます。インポートを続行するには、これを修正する最善の方法は何ですか?

ベストアンサー1

read_csvencodingは、さまざまな形式のファイルを処理するためのオプションを取ります。私は、読み取りにはread_csv('file', encoding = "ISO-8859-1")主に 、または を使用しencoding = "utf-8"、通常はutf-8を使用しますto_csv

または(Windows)aliasなどのオプションのいずれかを使用することもできます(参照)'latin''cp1252''ISO-8859-1'Python ドキュメント、また、遭遇する可能性のある他の多数のエンコーディングについても。

見る関連するPandasドキュメントPython ドキュメントの CSV ファイルの例、そしてSOには関連する質問がたくさんあります。良い背景情報源はすべての開発者がユニコードと文字セットについて知っておくべきこと

エンコーディングを検出するには(ファイルに非ASCII文字が含まれていると仮定)、encaマニュアルページ) またはfile -i(linux) またはfile -I(osx) (参照マニュアルページ)。

おすすめ記事