Ответ декодирования со смешанным кодированием UTF-8 в Python - PullRequest
2 голосов
/ 26 апреля 2020

Я загружаю данные с веб-сайта, используя aiohttp, и я получаю байтовый объект в качестве ответа, но мне трудно декодировать его. Это пример ответа, который я получаю

b'\\r\\nLocalit\xc3\xa0' # Località
b'\\u003cdiv\\u003e12/09/2019\\u003c/div\\u003e\\r\\n' # <div>12/09/2019</div>

Насколько я понимаю, он имеет нормальный юникод для текста и экранированный юникод для тегов html и перевода строки. Если я попытаюсь расшифровать его, используя "str (content," utf-8 ")", у меня все равно останутся теги html в этом формате

\u003cdiv \u003e12/09/2019\u003c/div\u003e\r\n

Должен ли я просто сделать руководство .replace("\u003", "<") для каждого тег или есть более элегантное решение?

1 Ответ

1 голос
/ 26 апреля 2020

Вы можете использовать код 'unicode-escape' c для преобразования части в юникоде, а затем перекодировать прозрачно в байты (для этого удобно использовать латино-1, поскольку обеспечивает соответствие 1-к-1 между байтами и символами), затем расшифруйте как 'utf-8':

b = b'\\u003cdiv\\u003e12/09/2019\\u003c/div\\u003e\\r\\n\\r\\nLocalit\xc3\xa0'
b.decode('unicode-escape').encode('latin1').decode('utf8')
# '<div>12/09/2019</div>\r\n\r\nLocalità'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...