#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"] } }
Комментариев нет:
Отправить комментарий