我對使用Python打開和讀取utf-8編碼的CSV文件有疑問。我花了大部分時間瀏覽Stackoverflow主題和Python csv模塊,但我似乎無法找到合適的解決方案。我的CSV文件中包含有「特殊」人物西班牙語和德語的話,這是我的文件的一個片段(N,E等):Python:使用UTF-8編碼讀取德文/西班牙文CSV文件
english_person,spanish_M,spanish_F,german_person
woman,mujer ,mujer ,Frau
strong,fuerte ,fuerte ,stark
boy,niño ,niño ,Junge
只是想與編解碼器模塊讀取它不工作:
import csv
import codecs
f = codecs.open('file.csv', 'rb', encoding='utf-8')
reader = csv.reader(f)
for line in reader:
print line
我得到這個錯誤:
UnicodeEncodeError: 'ascii' codec can't encode character u'\ufeff' in position 0: ordinal not in range(128)
所以,我下載了unicodecsv模塊,並試圖讀取這樣的文件:
import unicodecsv
myfile = open('file.csv')
data = unicodecsv.reader(myfile, encoding='utf-8', delimiter=';')
for row in data:
print row
我幸運的是沒有得到一個錯誤了,但是我還是在我的輸出,這些奇怪的字符(最後一行):
[u'\ufeffenglish_person,spanish_M,spanish_F,german_person']
[u'woman,mujer ,mujer ,Frau ']
[u'strong,fuerte ,fuerte ,stark ']
[u'boy,ni\xf1o ,ni\xf1o ,Junge ']
這是怎麼回事,我該如何解決這個問題?感謝您的幫助!
那奇怪的字符都像$字符,€,和等。 – 2014-10-07 09:53:20
在我的輸出中出現的奇怪字符我的意思是最後一行中的'\ xf1'部分,它似乎將'ñ'放在'niño'這個字中。 – Alice 2014-10-07 10:00:39
檢查您的CSV: 德語中沒有單詞「fuerte」。 也許你想要「führte」(過去的「führen」[領導]) – ngulam 2014-10-07 13:17:33