再一次,处理字符编码的问题开始困扰着我。我正在打开一个包含 XML 的文本文件并将其导入
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 次......