2013-04-12 58 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 

如何更正此錯誤?

版本:3.2.3的Python

回答

3

輸入文件顯然不是UTF-8編碼,所以你必須至少這些選項:

  • f=open('chars.csv', encoding='utf-8', errors='ignore')如果給定的文件大多是UTF-8和你不關心一些小數據丟失。對於其他errors參數值check manual
  • 簡單地使用正確的編碼,像拉丁-1,如果你知道一個
0

這不是UTF-8編碼。 ±的UTF-8編碼是\ xC2 \ xB1,而\是\ xC2 \ x83。正如RobertT所建議的,嘗試Latin-1:

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