ElementTree和unicode
我在xml文件中有这个字符:
<data>
<products>
<color>fumè</color>
</product>
</data>
我尝试使用以下代码生成ElementTree的实例:
string_data = open('file.xml')
x = ElementTree.fromstring(unicode(string_data.encode('utf-8')))
我收到以下错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe8' in position 185: ordinal not in range(128)
(注意:位置不准确,我从一个较大的XML样本中取样)。
怎么解决呢?谢谢
-
你 不会
需要解码XML的ElementTree的工作。XML带有自己的编码信息(默认为UTF-8),ElementTree为您完成工作,输出unicode:>>> data = '''\ ... <data> ... <products> ... <color>fumè</color> ... </products> ... </data> ... ''' >>> x = ElementTree.fromstring(data) >>> x[0][0].text u'fum\xe8'
如果您的数据包含在文件(如)对象中,只需将文件名或文件对象直接传递给
ElementTree.parse()
函数:x = ElementTree.parse('file.xml')