2011-12-25 24 views
38

¿Hay una manera de URL decodificar una cadena en Python 3URL con Python 3

a tomar algo como esto

id%253D184ff84d27c3613d%26quality%3Dmedium 

y decodificarlo dos veces para obtener

id=184ff84d27c3613d&quality=medium 

Respuesta

50

Justo use urllib.parse.unquote():

>>> import urllib.parse 
>>> urllib.parse.unquote('id%253D184ff84d27c3613d%26quality%3Dmedium') 
'id%3D184ff84d27c3613d&quality=medium' 
>>> urllib.parse.unquote('id%3D184ff84d27c3613d&quality=medium') 
id=184ff84d27c3613d&quality=medium 
+1

obtengo 'AttributeError: 'módulo' objeto no tiene atributo 'parse'', en lugar debo usar' urllib.unquote() 'directamente . – Benjamin

+4

@Benjamin: Estás usando Python2. Esto es para Python3. – Blender

+0

No sé por qué tiene que ejecutarse dos veces, ¿puedes explicar @Blender? –

5

Prueba esto:

from urllib.parse import unquote 
s = 'id%253D184ff84d27c3613d%26quality%3Dmedium' 
unquote(unquote(s)) 

Volverá:

> 'id=184ff84d27c3613d&quality=medium' 
+1

Python3 organizó' urllib' y 'urllib2' en un solo 'urllib' con diferentes submódulos. Esto funcionaría para Python2. – Blender

+0

Gracias por señalarlo, ¿cuál sería la forma correcta en Python3? 'from urllib import parse.unquote'? –

+1

'desde urllib.parse import unquote'. Ver mi respuesta – Blender