Decodificar caracteres escapados en URL

Tengo una lista que contiene URL con caracteres de escape en ellos. Esos caracteres han sido configurados por urllib2.urlopen cuando recupera la página html:

 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 

¿Hay una manera de transformarlos de nuevo a su forma sin escaparse en python?

PS: Las URL están codificadas en utf-8

Documentos oficiales

urllib.unquote( string )

Reemplace %xx escapes por su equivalente de un solo carácter.

Ejemplo: unquote('/%7Econnolly/') produce '/~connolly/' .

Y luego simplemente decodificar.


Actualización: Para Python 3, escriba lo siguiente:

 urllib.parse.unquote(url) 

Python 3 documentos.

Y si estás usando Python3 podrías usar:

 urllib.parse.unquote(url) 

o 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)' 

Puedes usar 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)