ElementTree和unicode

发布于 2021-01-29 18:07:34

我在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样本中取样)。

怎么解决呢?谢谢

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    不会
    需要解码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')
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看