我从 HTTP 标头中获取了一个字符串,但它已被转义。我可以使用什么函数来转义它?
myemail%40gmail.com -> [email protected]
urllib.unquote() 是可行的方法吗?
unquote
是执行此操作的常用方法。
>>> import urllib
>>> urllib.unquote("myemail%40gmail.com")
'[email protected]'
unquote_plus
:
与 unquote() 类似,但也用空格替换加号,这是取消引用 HTML 表单值所需的。
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。
对之前答案的小修正(使用 python 3.11 测试)-
from urllib.parse import unquote
unquote('myemail%40gmail.com')
'[email protected]'