Страницы

Поиск по вопросам

пятница, 10 января 2020 г.

Русская кодировка json объекта (python)

#python #json #encoding #json_encode


При попытке форматированного вывода JSON, с помощью dump, перестают отображаться
русские символы. Появляется что-то типа ""(произвольное поле, например)Address": "\u0443\u043b\u0438\u0446\u0430
\u041c\u0430 и т. д."

Пробовал json.dumps().encode("utf8") и codac convert - ничего не помогает.

def load_data(filepath):
with open(filepath, 'r', encoding='utf-8') as fh:  
    data = json.load(fh)  # загружаем из файла данные в словарь data
    return data


def pretty_print_json(data):
 inf = json.dumps(data,sort_keys=False,indent=4, separators=(',', ': '))
 return inf    

    


Ответы

Ответ 1



Воспользуйтесь параметром ensure_ascii=False: Из документации: If ensure_ascii is true (the default), the output is guaranteed to have all incoming non-ASCII characters escaped. If ensure_ascii is false, these characters will be output as-is. Пример: In [41]: with open(fn, 'r', encoding='utf-8') as f: ...: data = json.load(f) ...: ...: print(json.dumps(data, ...: sort_keys=False, ...: indent=4, ...: separators=(',', ': '))) ...: { "\u043f\u0440\u0438\u043c\u0435\u0440": { "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a": "\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043b\u043e\u0432\u0430\u0440 \u044f", "\u0441\u043f\u0438\u0441\u043e\u043a": [ "\u044d\u043b\u0435\u043c\u0435\u043d\u0442 1", "\u044d\u043b\u0435\u043c\u0435\u043d\u0442 2" ] } } In [42]: print(json.dumps(data, ...: sort_keys=False, ...: indent=4, ...: ensure_ascii=False, ...: separators=(',', ': '))) ...: { "пример": { "Заголовок": "пример словаря", "список": [ "элемент 1", "элемент 2" ] } } JSON file: { "пример": { "Заголовок": "пример словаря", "список": ["элемент 1", "элемент 2"] } }

Комментариев нет:

Отправить комментарий