Как правильно использовать кириллицу в библиотеке Python lxml
Я пытаюсь сгенерировать.xml файлы с кириллическими символами внутри. Но результат неожиданный. Какой самый простой способ избежать этого результата? Пример:
from lxml import etree
root = etree.Element('пример')
print(etree.tostring(root))
Что я получаю это:
b'<пример/>'
Стоит из:
b'<пример/>'
1 ответ
Решение
etree.tostring()
без дополнительных аргументов выводит только ASCII-данные в виде bytes
объект. Вы могли бы использовать etree.tounicode()
:
>>> from lxml import etree
>>> root = etree.Element('пример')
>>> print(etree.tostring(root))
b'<пример/>'
>>> print(etree.tounicode(root))
<пример/>
или укажите кодек с encoding
аргумент; однако вы все равно получите байты, поэтому вывод нужно будет снова декодировать:
>>> 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'))
<пример/>