import urllib.parse urllib.parse.unquote(string, encoding='utf-8', errors='replace') urllib.parse.unquote_plus(string, encoding='utf-8', errors='replace')
string
- обрабатываемый URL-адрес,encoding='utf-8'
- получаемая кодировка строки,errors='replace'
- обработчик ошибок кодировки.Функция unquote()
модуля urllib.parse
заменяет в строке string
URL-адреса escape-последовательности %xx
их односимвольными эквивалентами. Строка URL-адреса string
может быть объектом типа str
или bytes
.
Изменено в Python 3.9: аргумент string
поддерживает str
или bytes
(ранее только str
).
Функция unquote_plus()
делает то же самое, НО также заменяет знаки плюса '+'
пробелами, как это требуется для удаления кавычек из значений HTML-форм. Строка URL-адреса string
должна быть строкой str
.
Необязательные аргументы encoding
и errors
указывают, как декодировать последовательности %xx
, в символы Юникода, как это принято методом bytes.decode()
.
Аргумент encoding
по умолчанию 'utf-8'
. Аргумент обработчика ошибок кодирования по умолчанию 'replace'
, то есть недопустимые последовательности заменяются символом-заполнителем.
unquote()
и unquote_plus()
:Раскодируем часть URL-адреса, закодированного в примерах функций quote()
и quote_plus()
.
>>> import urllib.parse >>> url_path = '%2F?text=%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8&opt=0+0' # работа функции unquote() >>> urllib.parse.unquote(url_path) # '/?text=строки&opt=0+0' # работа функции unquote_plus() >>> urllib.parse.unquote_plus(url_path) # '/?text=строки&opt=0 0'
Из примера видно, что функция urllib.parse.unquote()
не заменяет символ плюс '+'
на пробел в значении параметра opt
. Функция urllib.parse.unquote_plus()
возвращает первоначальный URL-адрес, какой он был до кодирования.