2013-04-12 5 views
0

входного файла: chars.csv:Получение UnicodeDecodeError при доступе к 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

ответ

3

Ваш входной файл явно не UTF-8 кодируются, так что у вас есть по крайней мере те варианты:

  • f=open('chars.csv', encoding='utf-8', errors='ignore'), если данный файл в основном UTF-8, и вы не заботятся о небольшой потере данных. Для других значений параметров errorscheck manual
  • просто использовать правильную кодировку, как Latin-1, если вы знаете, один
0

Это не UTF-8 кодировки. Кодировка UTF-8 ± равна \ xC2 \ xB1 и Â равна \ xC2 \ x83. Как предложил RobertT, попробуйте латинский-1:

f=open('chars.csv',encoding='latin-1') 
Смежные вопросы