11

我有一个带有 url 响应的 dict。喜欢:

>>> d
{
0: {'data': u'<p>found "\u62c9\u67cf \u591a\u516c \u56ed"</p>'}
1: {'data': u'<p>some other data</p>'}
...
}

在此数据值上使用xml.etree.ElementTree函数时 ( d[0]['data']) 我得到了最著名的错误消息:

UnicodeEncodeError: 'ascii' codec can't encode characters...

我应该如何处理这个 Unicode 字符串以使其适合 ElementTree 解析器?

PS。请不要向我发送带有 Unicode 和 Python 解释的链接。不幸的是,我已经阅读了所有内容,并且无法像其他人一样使用它。

4

1 回答 1

25

您必须手动将其编码为 UTF-8:

ElementTree.fromstring(d[0]['data'].encode('utf-8'))

因为 API 仅将编码字节作为输入。UTF-8 是此类数据的良好默认值。

它将能够从那里再次解码为 un​​icode:

>>> from xml.etree import ElementTree
>>> p = ElementTree.fromstring(u'<p>found "\u62c9\u67cf \u591a\u516c \u56ed"</p>'.encode('utf8'))
>>> p.text
u'found "\u62c9\u67cf \u591a\u516c \u56ed"'
>>> print p.text
found "拉柏 多公 园"
于 2012-11-21T12:46:52.620 回答