当前位置: 首页 > 面试题库 >

ElementTree和unicode

鲜于凯康
2023-03-14
问题内容

我在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')


 类似资料:
  • Node-Elementtree(Node Elementtree)是一个 Node.JS XML 解析和序列化工具,基于 Python ElementTree。

  • 问题内容: 我必须处理足够大(最大1GB)的xml文档,并使用python解析它们。我正在使用iterparse()函数(SAX样式解析)。 我关注的是以下内容,假设您有一个像这样的xml 问题是,当然知道我何时获得姓氏(如辛普森一家)以及何时获得该家庭成员之一的姓名(例如荷马) 到目前为止,我一直在使用“开关”,它会告诉我是否在“成员”标签中,代码看起来像这样 这很好,因为输出是 我担心的是,在

  • 问题内容: I’ve searched extensively for the past few days and can’t seem to find what I’m looking for. I’ve written a script using Python 2.7.3 and ElementTree to parse an XML file and edit an attribute b

  • 问题内容: 我的XML文件如下所示: 我要做的就是提取ListPrice。 这是我正在使用的代码: 绝对没有输出。我也试过 没有不同。 我究竟做错了什么? 问题答案: 您有2个问题。 1)仅包含根元素,而不包含整个文档。它是Element类型而不是ElementTree类型。 2)如果将命名空间保留在XML中,则搜索字符串需要使用命名空间。 要解决问题1: 您需要更改: 至: 要解决问题2: 您可

  • 问题内容: 我一直在使用django和elementtree开发应用程序,并将其部署到生产服务器时发现它正在运行python 2.4。我已经能够捆绑elementtree但现在我得到了错误: 不幸的是,我无法升级python,因此即时通讯卡住了我得到的内容。如何使用SimpleXMLTreeBuilder作为解析器和/或需要重写代码? 问题答案: 如果你有想要使用ElementTree的第三方模块

  • 问题内容: 我正在尝试编写一个用于与last.fm API进行交互的小脚本。 我有一点使用的经验,但是以前使用它的方式似乎无效,而是返回一个空列表。 我删除了API密钥,因为我不知道它到底应该有多私密,并举了一个示例,说明了我在该位置接收的XML。 与API交互的类: 调用的get_now_playing方法: 我收到的xml样本: 问题答案: 问题在于, 如果给定标签名称,则仅搜索元素的直接后代