我尝试生成其中包含西里尔字母符号的 .xml 文件。但结果却出人意料。避免这种结果的最简单方法是什么?
例子:
from lxml import etree
root = etree.Element('пример')
print(etree.tostring(root))
我得到的是:
b'<пример/>'
代替:
b'<пример/>'
etree.tostring()
不带附加参数将纯 ASCII 数据输出为bytes
目的。你可以使用etree.tounicode() http://lxml.de/api/lxml.etree-module.html#tounicode:
>>> from lxml import etree
>>> root = etree.Element('пример')
>>> print(etree.tostring(root))
b'<пример/>'
>>> print(etree.tounicode(root))
<пример/>
或指定一个编解码器encoding争论 http://lxml.de/api/lxml.etree-module.html#tostring;但是,您仍然会得到字节,因此需要再次解码输出:
>>> print(etree.tostring(root, encoding='utf8'))
b'<\xd0\xbf\xd1\x80\xd0\xb8\xd0\xbc\xd0\xb5\xd1\x80/>'
>>> print(etree.tostring(root, encoding='utf8').decode('utf8'))
<пример/>
将编码设置为unicode
给你相同的输出tounicode()
产生,并且是首选拼写:
>>> print(etree.tostring(root, encoding='unicode'))
<пример/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)