解码URL中的转义字符
我有一个列表,其中包含带有转义字符的url。 这些字符在恢复html页面时由urllib2.urlopen
设置:
http://www.sample1webpage.com/index.php?title=%E9%A6%96%E9%A1%B5&action=edit http://www.sample1webpage.com/index.php?title=%E9%A6%96%E9%A1%B5&action=history http://www.sample1webpage.com/index.php?title=%E9%A6%96%E9%A1%B5&variant=zh
有没有一种方法可以将它们转换成python中的非转义forms?
PS:这些url是用UTF-8编码的
官方文档。
urllib.unquote(
string)
用相同的单字符replace
%xx
转义符。例如:
unquote('/%7Econnolly/')
产生'/~connolly/'
。
然后解码。
如果你正在使用Python3
你可以使用:
urllib.parse.unquote(url)
或者urllib.unquote_plus
>>> import urllib >>> urllib.unquote('erythrocyte+membrane+protein+1%2C+PfEMP1+%28VAR%29') 'erythrocyte+membrane+protein+1,+PfEMP1+(VAR)' >>> urllib.unquote_plus('erythrocyte+membrane+protein+1%2C+PfEMP1+%28VAR%29') 'erythrocyte membrane protein 1, PfEMP1 (VAR)'
你可以使用urllib.unquote
import re def unquote(url): return re.compile('%([0-9a-fA-F]{2})',re.M).sub(lambda m: chr(int(m.group(1),16)), url)