По умолчанию модуль json
экранирует все не-ascii символы. Используйте ensure_ascii=False
, чтобы сохранить все символы Unicode без экранирования:
>>> print(json.dumps("""{"date": "Πριν από 3 ώρες"}"""))
"{\"date\": \"\u03a0\u03c1\u03b9\u03bd \u03b1\u03c0\u03cc 3 \u03ce\u03c1\u03b5\u03c2\"}"
>>> print(json.dumps("""{"date": "Πριν από 3 ώρες"}""", ensure_ascii=False))
"{\"date\": \"Πριν από 3 ώρες\"}"
Просто передайте параметр при сбросе данных:
with open("result.txt", "a+", encoding="utf-8-sig") as f:
json.dump(result, f, indent=2, sort_keys=True)
Обратите внимание, что JSON с экранированием без ascii и без него эквивалентны в отношении стандарта JSON.