我从 HTTP 标头中获得了一个字符串,但它已被转义.. 我可以使用什么函数来取消转义它?
myemail%40gmail.com -> myemail@gmail.com
urllib.unquote() 会是要走的路吗?
我很确定 urllibunquote
是这样做的常用方法。
>>> import urllib
>>> urllib.unquote("myemail%40gmail.com")
'myemail@gmail.com'
还有unquote_plus
:
与 unquote() 类似,但也将加号替换为空格,这是取消引用 HTML 表单值的要求。
是的,它似乎urllib.unquote()
完成了这项任务。(我在 codepad 上针对您的示例对其进行了测试。)
在 Python 3 中,这些函数是urllib.parse.unquote
和urllib.parse.unquote_plus
。
后者例如用于 HTTP URL 中的查询字符串,其中空格字符 ( ) 传统上编码为加号 (
+
),而+
百分比编码为%2B
。
除了这些之外,还有unquote_to_bytes
将给定的编码字符串转换为bytes
,当编码未知或编码数据是二进制数据时可以使用它。但是没有unquote_plus_to_bytes
,如果你需要它,你可以这样做:
def unquote_plus_to_bytes(s):
if isinstance(s, bytes):
s = s.replace(b'+', b' ')
else:
s = s.replace('+', ' ')
return unquote_to_bytes(s)
有关是否使用unquote
或unquote_plus
在URL 编码空格字符时可用的更多信息: + 或 %20。