589

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

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

4

25 に答える 25

1072

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

または(Windows)aliasのようないくつかのオプションのいずれかを使用することもできます (遭遇する可能性のある他の多くのエンコーディングについても、python docsを参照してください)。'latin''cp1252''ISO-8859-1'

関連する Pandas のドキュメントcsv ファイルの python docs の例、SO に関する多くの関連する質問を参照してください。優れたバックグラウンド リソースは、すべての開発者がユニコードと文字セットについて知っておくべきことです。

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

于 2013-08-11T13:10:22.297 に答える
21
with open('filename.csv') as f:
   print(f)

このコードを実行した後、「filename.csv」のエンコーディングが見つかり、次のようにコードを実行します

data=pd.read_csv('filename.csv', encoding="encoding as you found earlier"

どうぞ

于 2018-12-15T13:49:32.597 に答える
4

私が直面した別の重要な問題で、同じエラーが発生しました。

_values = pd.read_csv("C:\Users\Mujeeb\Desktop\file.xlxs")

read_csv()^メソッドを使用して Excel ファイルを読み込んでいるため、この行でも同じエラーが発生しました。.xlxsread_excel()の読み取りに使用

于 2020-04-21T20:36:21.293 に答える
3

オンライン バンキングからダウンロードした簡体字中国語の CSV ファイルを開くことができlatin1ませiso-8859-1cp1252

しかし、pd.read_csv("",encoding ='gbk')単に仕事をします。

于 2019-11-03T06:01:07.467 に答える
1

Jupyter ノートブックを使用しています。私の場合、ファイルが間違った形式で表示されていました。「エンコード」オプションが機能していませんでした。そのため、csv を utf-8 形式で保存すると、機能します。

于 2019-05-13T00:18:17.957 に答える
0

chardet または cchardet を使用して、ファイルのエンコーディングを最初に検出することをいつでも試みることができます。

from pathlib import Path
import chardet

filename = "file_name.csv"
detected = chardet.detect(Path(filename).read_bytes())
# detected is something like {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}

encoding = detected.get("encoding")
assert encoding, "Unable to detect encoding, is it a binary file?"

df = pd.read_csv(filename, encoding=encoding)

于 2022-03-02T06:50:38.343 に答える
0

.csv ファイルのみに問題がある場合があります。ファイルが壊れている可能性があります。この問題に直面したとき。ファイルを csv としてもう一度「名前を付けて保存」します。

0. Open the xls/csv file
1. Go to -> files 
2. Click -> Save As 
3. Write the file name 
4. Choose 'file type' as -> CSV [very important]
5. Click -> Ok 
于 2020-10-03T17:17:27.770 に答える