2017-01-27 72 views
0

當我導入CSV文件,蟒蛇引發以下錯誤:的UnicodeDecodeError隨着CSV文件

File "/Users/sethkillian/Documents/Python/metar/metar.py", line 31, in get_AirportInfo 
    for line in airports: 

    File "/Users/sethkillian/anaconda/lib/python3.5/encodings/ascii.py", line 26, in decode 
    return codecs.ascii_decode(input, self.errors)[0] 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 358: ordinal not in range(128) 

使用Microsoft Excel,我將文件保存爲UTF-8 CSV文件。

我也試圖把.decode('UTF-8')就完了,但它不會接受一個字符串。

這裏是我的原代碼:

def get_AirportInfo(): 
    airports = open('airport_codes.csv','r') 
    for line in airports: 
     print(line.strip().split(',')) 

有什麼想法?我查看了文件,找不到任何應該將其跳過的特殊字符。

+0

嘗試機場=打開( 「 'airport_codes.csv'」, 「R」,編碼= 「UTF-8」) – Illusionist

+0

你可以通過任何機會發布文件?我通常會遍歷並嘗試解碼每列中的每個值,以查看哪些值導致錯誤。 –

回答

0

在Python3 str有沒有屬性decode,但你可以閱讀該文件作爲二進制文件,如果你想使Python2兼容它,使用codecs模塊是一行行

with open('airport_codes.csv', 'rb') as fp: 

for line in fp: 
    print(line.decode('utf-8').strip().split(',')) 

解碼,雖然在Python3內置openencoding說法:

import codecs 

with codecs.open('airport_codes.csv', 'r', encoding = 'utf-8'): 

for line in fp: 
    print(line.strip().split(',')) 

這些解決方案有可能將工作,因爲0xc3可能在是有效的如果有另一個字節。