print - python raw string
Decodificar caracteres escapados en URL (5)
Tengo una lista que contiene URLs con caracteres escapados en ellos. Esos caracteres han sido establecidos 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 alguna forma de transformarlos a su forma no escamada en Python?
PD: las URL están codificadas en utf-8
Puedes usar urllib.unquote
Y si está usando Python3
, puede 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)''
urllib.unquote(
cadena)
Reemplace
%xx
escapes por su equivalente de un solo carácter.Ejemplo:
unquote(''/%7Econnolly/'')
produce''/~connolly/''
.
Y luego solo descifrar.
Actualización: para Python 3, escriba lo siguiente:
urllib.parse.unquote(url)
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)