У меня есть список, содержащий URL-адреса с экранированными символами в них. Эти символы были установлены, urllib2.urlopen
когда он восстанавливает страницу 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
Есть ли способ вернуть их в неэкранированную форму в Python?
PS: URL-адреса закодированы в utf-8
urllib.parse.unquote
urllib.request.unquote
И если вы используете,
Python3
вы можете использовать:import urllib.parse urllib.parse.unquote(url)
источник
urllib.request.unquote
или же
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
источник
b"\xe9\xa6\x96\xe9\xa1\xb5".decode("utf-8")
помощью (используя теперь несколько более современный синтаксис Python).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)
источник
urllib2
не является частью стандартного дистрибутива Python.re
является.