Mam listę zawierającą adresy URL ze znakami ucieczki. Te znaki zostały ustawione, urllib2.urlopen
gdy odzyskuje stronę 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
Czy istnieje sposób, aby przekształcić je z powrotem w ich niezmienną formę w Pythonie?
PS: adresy URL są zakodowane w utf-8
urllib.parse.unquote
urllib.request.unquote
A jeśli używasz,
Python3
możesz użyć:import urllib.parse urllib.parse.unquote(url)
źródło
urllib.request.unquote
lub
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)'
źródło
Możesz użyć
urllib.unquote
źródło
b"\xe9\xa6\x96\xe9\xa1\xb5".decode("utf-8")
pomocą (używając teraz nieco nowszej składni Pythona).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)
źródło
urllib2
nie jest częścią standardowej dystrybucji Pythona.re
jest.