Python网页数据提取中特殊字符与URL编码字符解码问题
解决方法
一、字节数据转目标字符串
你的字节数据 b'Set temp to 0 \xf8C in 10 s' 中,\xf8 用Latin-1解码后得到字符 ø,要转换成目标里的 °C,需要先解码再替换:
byte_info = b'Set temp to 0 \xf8C in 10 s' # 先用Latin-1解码字节为字符串 temp_str = byte_info.decode('latin-1') # 将ø替换为°得到目标字符串 string = temp_str.replace('ø', '°') print(string) # 输出: Set temp to 0 °C in 10 s
你之前的尝试无效,核心原因是没做这步替换——\xf8 本身解码后不是 °,而是 ø,必须手动替换才能得到目标格式。如果原始字节数据里的 \xf8 是编码错误导致的(正常 ° 的Latin-1编码是 \xb0),那直接解码 b'Set temp to 0 \xb0C in 10 s' 就能得到目标字符串。
二、URL编码字符解码
别用手动循环替换的方式,Python标准库的 urllib.parse.unquote 可以完美处理所有标准URL编码字符,包括你列出的这些:
from urllib.parse import unquote # 示例:处理包含URL编码的字符串 encoded_str = "Price%24%3A%2099%5E%7E" decoded_str = unquote(encoded_str) print(decoded_str) # 输出: Price$: 99^~
这个方法比手动写字典替换更可靠,能自动处理所有符合RFC标准的URL编码,不会出现漏替换或替换错误的情况。
内容的提问来源于stack exchange,提问作者Libin Andrews
相关产品推荐
相关产品推荐

