Ответ 1
urllib.unquote(
строка)
Замените
%xx
escape-последовательности их односимвольным эквивалентом.Пример:
unquote('/%7Econnolly/')
дает'/~connolly/'
.
И затем просто расшифруйте.
Update: Для Python 3 это:
urllib.parse.unquote(url)
У меня есть список, содержащий 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?
P.S.: URL-адреса закодированы в utf-8
urllib.unquote(
строка)
Замените
%xx
escape-последовательности их односимвольным эквивалентом.Пример:
unquote('/%7Econnolly/')
дает'/~connolly/'
.
И затем просто расшифруйте.
Update: Для Python 3 это:
urllib.parse.unquote(url)
И если вы используете Python3
, вы можете использовать:
urllib.parse.unquote(url)
или 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
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)