2011-12-25 12 views
38

Czy istnieje sposób, aby zawartość zdekodować ciąg w Pythonie 3URL Decode z Python 3

wziąć coś takiego

id%253D184ff84d27c3613d%26quality%3Dmedium 

i dekodować go dwukrotnie, aby uzyskać

id=184ff84d27c3613d&quality=medium 

Odpowiedz

50

Wystarczy użyj 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

uzyskać 'AttributeError: 'moduł' obiekt ma atrybut„parse'' zamiast muszę użyć 'urllib.unquote()' bezpośrednio . – Benjamin

+4

@Benjamin: Używasz Python2. To jest dla Python3. – Blender

+0

Nie wiem, dlaczego trzeba uruchomić dwa razy, czy możesz wyjaśnić @Blender? –

5

Spróbuj tego:

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

Powróci:

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

Python3 zorganizował' urllib' i 'urllib2' w pojedynczy 'urllib' z różnymi podmodułami. To działałoby dla Python2. – Blender

+0

Dzięki za wskazanie, jaki byłby poprawny sposób w Pythonie3? 'from urllib import parse.unquote'? –

+1

'from urllib.parse import unquote'. Zobacz moją odpowiedź. – Blender