访问csv文件时获取UnicodeDecodeError

时间:2013-04-12 06:46:37

标签: python python-3.2 python-unicode

输入文件: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

2 个答案:

答案 0 :(得分:3)

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

  • f=open('chars.csv', encoding='utf-8', errors='ignore')如果给定的文件大部分是utf-8而你不关心一些小的数据丢失。对于其他errors参数值check manual
  • 只需使用正确的编码,如latin-1,如果你知道一个

答案 1 :(得分:0)

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

f=open('chars.csv',encoding='latin-1')