【问题标题】:Decoding response with mixed UTF-8 encoding in PythonPython中混合UTF-8编码的解码响应
【发布时间】:2020-04-26 09:39:31
【问题描述】:

我正在使用 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", "&lt;") 还是有更优雅的解决方案?

【问题讨论】:

    标签: python web-scraping unicode utf-8


    【解决方案1】:

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

    【讨论】:

    • 如果我在文本上使用unicode-escape,我会得到Località 而不是Località
    • 对不起,我错过了那部分,我编辑了答案!
    猜你喜欢
    • 2019-09-15
    • 2014-01-24
    • 2018-02-18
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 2019-05-21
    相关资源
    最近更新 更多