再一次,處理字符編碼的問題已經開始困擾着我。 我打開包含XML和其導入文本文件到由Python 3.4中的文本編碼Flummoxxed:如何防止「UnicodeEncodeError:'charmap'編解碼器無法編碼」
import xml.etree.ElementTree as ET
import codecs
f = open('Acta_Diabetol_2008_Jun_29_45(2)_107-127.nxml','r',encoding='cp1252')
myTree = ET.parse(f)
f.close()
of = open('Acta_Diabetol_2008_Jun_29_45(2)_107-127.txt','w')
for elem in myTree.iter('sec'):
of.write(elem2StringRecurse(elem)) #gets mad here
of.close()
給出的錯誤是
line 197, in <module>
of.write(elem2StringRecurse(elem))
File "C:\Python34\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2265'
in position 139: character maps to <undefined>
我的問題是雙重的。首先,儘管一個經驗豐富的程序員研究這個問題已經比通常更混亂,因爲這在Python 2和3中的處理方式不同。 因此,我不確定錯誤的含義。 我知道一些意大利的「a」看起來是個人物。 它是否告訴我,沒有Unicode替換?
二,如何在普通情況下防止這種情況?我正在嘗試編寫代碼來抽取和轉儲自然語言處理的文本文件:從XML - >純文本。我不能讓它崩潰在這樣的事情上;我的意思是,我相信我可以手動編輯出有問題的人物,但我不能在任何事情做的1000次......
謝謝你的回答。我使用的是'cp1252'編解碼器,因爲該文件是在該編解碼器中編碼的。 (由Jedit和FireFox確認)。這不正確嗎? 也 - >它現在的作品,謝謝。 – BAMF4bacon
它是否在XML文件本身中說'encoding ='cp1252''?這是可能的,但該編碼不知道「歐洲」語言中使用的幾個字符。你可以將文件發佈到某個地方或給我們一個鏈接嗎? –
她在這裏:https://drive.google.com/file/d/0B3RjoEb8jEORalAtYi1zemVXS2s/edit?usp=sharing – BAMF4bacon