Pregunta

Tengo una cadena desde una cabecera HTTP, pero ha sido escapé .. qué función puedo utilizar para unescape él?

myemail%40gmail.com -> myemail@gmail.com

¿Sería urllib.unquote () será el camino a seguir?

¿Fue útil?

Solución

Estoy bastante seguro de que urllib de unquote es la forma común de haciendo esto.

>>> import urllib
>>> urllib.unquote("myemail%40gmail.com")
'myemail@gmail.com'

También hay unquote_plus :

  

Como fin de la cita (), pero también reemplaza por signos más espacios, como se requiere para unquoting valores del formulario HTML.

Otros consejos

En Python 3, estas funciones son urllib.parse.unquote y urllib.parse.unquote_plus .

El último se utiliza por ejemplo para las cadenas de consulta en las direcciones URL HTTP, donde los caracteres de espacio () se codifican tradicionalmente como más el carácter (+), y la + es ciento codificada a %2B.

Además de éstos hay la unquote_to_bytes que convierte la cadena codificada dado a bytes, que se puede utilizar cuando la codificación no se conoce o los datos codificados son datos binarios. Sin embargo no hay unquote_plus_to_bytes, si lo necesita, puede hacerlo:

def unquote_plus_to_bytes(s):
    if isinstance(s, bytes):
        s = s.replace(b'+', b' ')
    else:
        s = s.replace('+', ' ')
    return unquote_to_bytes(s)

Más información sobre si usar o unquote unquote_plus está disponible en que codifica la carácter de espacio:. + o% 20

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top