Unescaping символы в строке с Python
Я сделал JSON-запрос, который дает мне строку, которая использует коды символов Unicode, которые выглядят следующим образом:
s = "\u003Cp\u003E"
И я хочу преобразовать это в:
s = "<p>"
Какой лучший способ сделать это в Python?
Обратите внимание, это тот же вопрос, что и этот, только в Python, за исключением Ruby. Я также использую Posterous API.
3 ответа
Если данные пришли из JSON, json
Модуль уже должен был расшифровать эти экранирования для вас:
>>> import json
>>> json.loads('"\u003Cp\u003E"')
u'<p>'
РЕДАКТИРОВАТЬ: первоначальный вопрос « Отмена экранирования символов в строке с помощью Python » не уточнял, должна ли строка быть написана или прочитана (позже были добавлены слова « ответ JSON », чтобы уточнить намерение было читать ).
Поэтому я ответил на противоположный вопрос: как записать сериализованные данные JSON, выгружая их в неэкранированную строку (вместо того, чтобы загружать данные из строки).
Мой вариант использования заключался в создании файла JSON из моего собственного словаря данных, но файл содержал экранированные символы, отличные от ASCII. Итак, я сделал это так:
with open(filename,'w') as jsonfile:
jsonstr = json.dumps(myDictionary, ensure_ascii=False)
print(jsonstr) # to screen
jsonfile.write(jsonstr) # to file
Если true (по умолчанию), в выводе гарантированно будут экранированы все входящие символы, отличные от ASCII. Если
ensure_ascii
false, эти символы будут выводиться как есть.
Взято отсюда: https://docs.python.org/3/library/json.html