2017-02-05 4 views
1

У меня есть xml, и я хочу преобразовать его в json, используя xmljson lib. XML является следующаяPython - xmljson - сохранить кириллические символы

<description>Описание товара</description> 

в консоли я следующее

>>> from xmljson import badgerfish as bf 
>>> from xml.etree.ElementTree import fromstring 
>>> from json import dumps 
>>> dumps(bf.data(fromstring('<description>Описание товара</description>'))) 

, а затем я получаю

>>> '{"description": {"$": "\\u041e\\u043f\\u0438\\u0441\\u0430\\u043d\\u0438\\u0435 \\u0442\\u043e\\u0432\\u0430\\u0440\\u0430"}}' 

Что я могу сделать для того, чтобы получить Описание товара вместо \\u041e\\u043f\\u0438\\u0441\\u0430\\u043d\\u0438\\u0435 \\u0442\\u043e\\u0432\\u0430\\u0440\\u0430

+0

делает консоль отображения символов кириллицы правильно? Это может быть проблема с консолью, а не Python. – lospejos

+0

Нет, это не проблема с консолью. Я попытался запустить тот же код внутри Django, и я получил ту же проблему с символами –

ответ

1

Использовать ensure_ascii=False в json.dumps:

import xmltodict 
import json 
s = '<description>Описание товара</description>' 
d = xmltodict.parse(s) 
json.dumps(d, ensure_ascii=False) 
# '{"description": "Описание товара"}' 

Примечание: вы можете расшифровать строку вручную:

st = "\\u041e\\u043f\\u0438\\u0441\\u0430\\u043d\\u0438\\u0435 \\u0442\\u043e\\u0432\\u0430\\u0440\\u0430" 
st.encode('ascii').decode('unicode-escape') 
# 'Описание товара' 

 Смежные вопросы

  • Нет связанных вопросов^_^