1

输入文件:chars.csv:

4,,x,,2,,9.012,2,,,,
6,,y,,2,,12.01,±4,,,,
7,,z,,2,,14.01,_3,,,,

当我尝试解析此文件时,即使在指定 utf-8 编码后也会出现此错误。

>>> f=open('chars.csv',encoding='utf-8')
>>> f.read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.2/codecs.py", line 300, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb1 in position 36: invalid start byte

如何纠正这个错误?

版本:Python 3.2.3

4

2 回答 2

3

您的输入文件显然不是 utf-8 编码的,因此您至少有以下选项:

  • f=open('chars.csv', encoding='utf-8', errors='ignore')如果给定的文件主要是 utf-8 并且您不关心一些小的数据丢失。对于其他errors参数值检查手册
  • 只需使用正确的编码,如 latin-1,如果您知道的话
于 2013-04-12T07:34:21.357 回答
0

这不是 UTF-8 编码。± 的 UTF-8 编码是 \xC2\xB1,而 Â 是 \xC2\x83。正如 RobertT 建议的那样,尝试 Latin-1:

f=open('chars.csv',encoding='latin-1')
于 2013-04-12T07:56:56.897 回答