import urllib.parse
urllib.parse.parse_qs(qs, keep_blank_values=False,
strict_parsing=False, encoding='utf-8',
errors='replace', max_num_fields=None,
separator='&')
urllib.parse.parse_qsl(qs, keep_blank_values=False,
strict_parsing=False, encoding='utf-8',
errors='replace', max_num_fields=None,
separator='&')
qs
- строку запроса типа application/x-www-form-urlencoded
keep_blank_values=False
- что делать со значениями с процентным кодированием,strict_parsing=False
- что делать с ошибками при разборе строки запроса,encoding='utf-8'
- кодировка преобразования значений с процентным кодированием,errors='replace'
- обработчик ошибок кодировки,max_num_fields=None
- количество полей для анализа,separator='&'
- символ, используемый для разделения параметров запроса (доступен с версии Python 3.10).parse_qs
- словарь, где ключи - это уникальные имена переменных запроса, а значения - это списки значений для каждого имени,parse_qsl
- список кортежей типа [(key, value), (key, value), ...]
.Функция parse_qs()
модуля urllib.parse
разбирает строку запроса qs
, заданную как строковый аргумент (данные типа application/x-www-form-urlencoded
).
Данные возвращаются в виде словаря. Ключи словаря - это уникальные имена переменных запроса, а значения - это списки значений для каждого имени.
Функция parse_qsl()
делает то же самое что и urllib.parse.parse_qs()
, только данные возвращаются в виде списка пар, имя параметра - значение. Другими словами в виде списка кортежей типа [(key, value), (key, value), ...]
.
Необязательный аргумент keep_blank_values
- это флаг, указывающий, следует ли рассматривать пустые значения в запросах с процентной кодировкой как пустые строки. Значение True
указывает, что пробелы следует сохранять в виде пустых строк. Значение False
по умолчанию указывает, что пустые значения следует игнорировать и рассматривать так, как если бы они не были включены.
Необязательный аргумент strict_parsing
- это флаг, указывающий, что делать с ошибками синтаксического анализа. Если значение False
(по умолчанию), ошибки молча игнорируются. Если значение True
, ошибки вызывают исключение ValueError
.
Необязательные аргументы encoding
и errors
определяют, как декодировать последовательности с процентным кодированием в символы Юникода, как это принято методом bytes.decode()
.
Необязательный аргумент max_num_fields
- это максимальное количество полей для анализа. Если прочитано больше полей max_num_fields
, то выдает исключение ValueError
.
Необязательный аргумент separator
- это символ, используемый для разделения аргументов запроса. По умолчанию это &
.
Используйте функцию urllib.parse.urlencode()
(с параметром doseq=True
) для преобразования словарей, возвращаемых функцией urllib.parse.parse_qs()
в строки запроса.
Изменено в Python 3.8: добавлен параметр max_num_fields
.
Изменено в Python 3.10: Добавлен аргумент separator
со значением по умолчанию &
. Версии Python до Python 3.10 позволяли использовать оба ;
и &
как разделитель параметров запроса. Это было изменено, чтобы разрешить использование только одного ключа-разделителя с &
в качестве разделителя по умолчанию.
parse_qs()
и parse_qsl()
:>>> import urllib.parse
>>> query_string = 'product=смартфоны&s=9&v=5&v=15&t='
>>> urllib.parse.parse_qs(query_string)
# {'product': ['смартфоны'], 's': ['9'], 'v': ['5', '15']}
>>> urllib.parse.parse_qs(query_string, keep_blank_values=True)
# {'product': ['смартфоны'], 's': ['9'], 'v': ['5', '15'], 't': ['']}
>>> urllib.parse.parse_qsl(query_string)
# [('product', 'смартфоны'), ('s', '9'), ('v', '5'), ('v', '15')]
>>> urllib.parse.parse_qsl(query_string, keep_blank_values=True)
# [('product', 'смартфоны'), ('s', '9'), ('v', '5'), ('v', '15'), ('t', '')]