解码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)