我正在运行一个程序,它正在处理3万个类似的文件。随机数量的它们停止并产生此错误…

  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

这些文件的来源/创建都来自同一个地方。纠正这个问题以继续导入的最佳方法是什么?


当前回答

with open('filename.csv') as f:
   print(f)

执行这段代码后,你会发现'filename.csv'的编码,然后执行如下代码

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

好了

其他回答

我遇到的另一个导致同样错误的重要问题是:

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

^这一行导致了同样的错误,因为我正在使用read_csv()方法读取excel文件。使用read_excel()读取.xlxs

在我的例子中,一个文件具有USC-2 LE BOM编码,根据notepad++。 对于python,它是encoding="utf_16_le"。

希望,这能帮助别人更快地找到答案。

请尝试添加

import pandas as pd
df = pd.read_csv('file.csv', encoding='unicode_escape')

这将有所帮助。为我工作。另外,请确保使用了正确的分隔符和列名。

为了快速加载文件,可以从只加载1000行开始。

有时问题只出现在.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 

这个答案似乎是CSV编码问题的万能答案。如果你的头文件出现了奇怪的编码问题,就像这样:

>>> f = open(filename,"r")
>>> reader = DictReader(f)
>>> next(reader)
OrderedDict([('\ufeffid', '1'), ... ])

然后在CSV文件的开头有一个字节顺序标记(BOM)字符。这个答案解决了这个问题:

Python读取csv - BOM嵌入到第一个键

解决方案是用encoding="utf-8-sig"加载CSV:

>>> f = open(filename,"r", encoding="utf-8-sig")
>>> reader = DictReader(f)
>>> next(reader)
OrderedDict([('id', '1'), ... ])

希望这能帮助到一些人。