Python3 сохранение JSON с одинарной кавычкой в ​​юникоде - PullRequest
0 голосов
/ 22 марта 2020

Я знаю, что раньше об этом спрашивали в Stackoverflow и на других сайтах, но я не могу сохранить файл JSON, используя экранированные символы Юникода (Python3). Я прочитал много уроков.

Что мне не хватает? Я много чего перепробовал, но ничего не работает. Я также пытался кодировать / декодировать в UTF-8, но мне явно что-то не хватает.

Просто чтобы прояснить, мне удалось заставить его работать на другие символы, такие как й (0439), но у меня возникли проблемы с закодированная одинарная кавычка ..

Если у меня есть следующий дикт:

import json
data = {"key": "Test \u0027TEXT\u0027 around"}

Я хочу сохранить его точно так же, как в новом файле JSON, но неважно, что Я делаю это всегда заканчивается как один символ, который кодируется в Unicode.

Следующие 2 блока печатают одно и то же: {"key": "Test 'TEXT' вокруг"}.

print(json.dumps(data))
print(json.dumps(data, ensure_ascii=False))

Есть ли способ сохранить строковый литерал Unicode? Я хочу иметь эту самую строку в качестве значения: "Test \ u0027TEXT \ u0027 вокруг"

1 Ответ

1 голос
/ 22 марта 2020

Поведение, которое вы описываете, не имеет ничего общего с JSON. Это просто, как Python 3 обрабатывает строки. Откройте оболочку и напишите:

>>> "Test \u0027TEXT\u0027 around"
"Test 'TEXT' around"

Если вы не хотите, чтобы Python интерпретировал специальные символы, вам следует использовать необработанные строки (или, возможно, даже байтовые последовательности):

>>> r"Test \u0027TEXT\u0027 around"
'Test \\u0027TEXT\\u0027 around'

Ссылка:

...