簡體   English   中英

在 Python 中使用混合 UTF-8 編碼解碼響應

[英]Decoding response with mixed UTF-8 encoding in 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\u0026quot;, "<")還是有更優雅的解決方案?

您可以使用'unicode-escape'編解碼器來轉換 unicode 部分,然后透明地重新編碼為字節(latin-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à'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM