Сообщить об ошибке.

Функция unquote() и unquote_plus() модуля urllib.parse в Python

Декодирует символы URL-адреса в указанную кодировку

Синтаксис:

import urllib.parse

urllib.parse.unquote(string, encoding='utf-8', 
                     errors='replace')

urllib.parse.unquote_plus(string, 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-адрес, какой он был до кодирования.