Python中混合UTF8编码的解码响应

2024-04-20 03:39:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用aiohttp从一个网站下载数据,得到一个字节对象作为响应,但我很难解码它。 这是我得到的回应的一个例子

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

据我所知,文本使用普通unicode,html标记和换行符使用转义unicode。 如果我尝试使用“str(content,“utf-8”)”来解码它,我仍然有这种格式的html标记

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

我应该为每个标签做一个手动.replace("\u003", "<")还是有更优雅的解决方案


Tags: 数据对象标记div字节aiohttp网站html
1条回答
网友
1楼 · 发布于 2024-04-20 03:39:37

您可以使用'unicode-escape'codec转换unicode部分,然后透明地重新编码为字节(拉丁语-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à'

相关问题 更多 >