parse

Warning

данный модуль доступен на третьей ветки питона

parse_qs()

parse.parse_qs(<строка запроса>, [, keep_blankvalues=False][, strict_parsing=False][, encoding='utf-8'][, errors='replace'])

разбирает строку запроса и возвращает словарь с ключами, содержащими названия параметров, и списка значений.

Parameters
  • keep_blankvalues (bool) – если истина, то параметры, не имеющие значений внутри строки запроса, также будут добавлены в результат.

  • strict_parsing (bool) – если истина, то при наличии ошибки возбуждается исключение ValueError

  • encoding (str) – кодировка данных

  • errors (str) – уровень обработки ошибок

>>> s = "str=%D1%F2%F0%EE%EA"&E0&v=10&v=20&t="
>>> parse qs(s, encoding="cp1251")
{'str': ['Строка'], 'v': ['10', '20']}
>>> parse_qs(s, keep_Ыank_va1ues=True, encoding="cp1251")
{'t': ["], 'str': ['Строка'], 'v': ['10', '20'])
parse.parse_qsl(<строка запроса>, [, keep_blankvalues=False][, strict_parsing=False][, encoding='utf-8'][, errors='replace'])

аналогична parse_qs(), только возвращает список кортежей, разбирает строку запроса

Parameters
  • keep_blankvalues (bool) – если истина, то параметры, не имеющие значений внутри строки запроса, также будут добавлены в результат.

  • strict_parsing (bool) – если истина, то при наличии ошибки возбуждается исключение ValueError

  • encoding (str) – кодировка данных

  • errors (str) – уровень обработки ошибок

>>> s = "str=%D1%F2%FO%EE%EA%EO&v=10&v=20&t="
>>> parse qsl(s, encoding="cpl251")
[('str', 'Строка'), ('v', '10'), ('v', '20')]
>>> parse_qsl(s, keep_blank_values=True, encoding="cp1251")
[('str', 'Строка'), ('v', '10'), ('v', '20'), ('t', ")]
parse.quote(<строка>[, safe='/'][, encoding=None][, errors=None])

заменяет все специальные симолы последовательностями %nn. Цифры, анг­лийские буквы и символы подчеркивания, точки и дефиса не кодируются. Пробелы преобразуются в последовательность %20.

Parameters

safe (str) – символы, которые преобразовывать нельзя

>>> quote("Cтpoкa", encoding="cp1251")
'%D1%F2%F0%EE%EA%E0'
>>> quote("Cтpoкa", encoding="utf-8")
'%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B0'
parse.quote_plus(<строка>[, safe='/'][, encoding=None][, errors=None])

функция аналогична функции quote(), но пробелы заменяются символом +, а символ / заменяется на %2F

Parameters

safe (str) – символы, которые преобразовывать нельзя

parse.quote_from_bytes(<последовательность байтов>[, safe='/'])

функция аналогична функции quote(), но в качестве первого параметра принимает последовательность байтов

parse.unquote(<строка>[, encoding='utf-8'][, errors='replace'])

заменяет последовательность %nn на соответсвующие символы. символ + не заменяется ничем

parse.unquote_plus(<строка>[, encoding='utf-8'][, errors='replace'])

заменяет последовательность %nn на соответсвующие символы. символ + заменяет пробелом

urlencode()

parse.urlencode(query, doseq=False, safe='', encoding=None, errors=None)

преобразовывает отдельные составляющие в строку запроса

  • query - dict, list[tuple]

  • doseq - bool - если истина, то можно указать последовательность из нескольких значений во втором параметре кортежа

urlencode({'str': 'Строка 2', 'var': 20}, encoding='cpl251)
# 'var=20&str='Шl%F2•;FO%EE%EA%E0+2'

urlencode([('str', 'Строка 2'), ('var', 20)], encodiпg='cp1251')
# 'str=%D1%F2%FO%EE%EA%E0+2&var=20'
parse.urljoin(<базовый урл>, <относитьльный или абсолютный урл>[, <разбор якоря>])

преобразует относитльный урл в абсолютный

>>> from urllib.parse import urljoin
>>> urljoin(http://admin.ru/f1/f2/test.html', 'file.html')
'http://admin.ru/fl/f2/file.html'
>>> urljoin(http://admin.ru/f1/f2/test.html', 'f3/file.html')
'http://admin.ru/fl/f2/f3/file.html'
>>> urljoin(http://admin.ru/f1/f2/test.html', '/file.html')
'http://admin.ru/file.html'
>>> urljoin(http://admin.ru/f1/f2/test.html', './file.html')
'http://admin.ru/fl/f2/file.html'
>>> urljoin(http://admin.ru/f1/f2/test.html', '../file.html')
'http://admin.ru/fl/file.html'
parse.urlparse(<url>[, <схема>[, <разбор_якоря>=False]])

возвращает ParseResult с результатом разбора адреса

Parameters
  • схема – название протокола, если протокла нет в составе адреса

  • разбор_якоря (bool) – если лож, то якорь будетвходить в состав других атрибутов

>>> urlparse('http://ilnurgi.ru:80/test.php;st?var=5#metka')
ParseResult(scheme='http', netloc='ilnurgi.ru:80', path='/test.php', params='st', query='var=5', fragment='metka')
parse.urlsplit(<url>[, <схема>[, <разбор_якоря>=False]])

возвращает SplitResult с результатом разбора адреса

>>> urlsplit('http://ilnurgi.ru:80/test.php;st?var=5#metka')
SplitResult(scheme='http', netloc='ilnurgi.ru:80', path='/test.php', query='var=5', fragment='metka')
parse.urlunparse(<последовательность>)

возвращает строку, адрес, собранную из отдельных значений

>>> urlunparse(('http', 'ilnurgi.ru:80', '/test.php', '', 'var=5', 'metka'))
'http://ilnurgi.ru:80/test.php?var=5#metka'
parse.urlunsplit(<последовательность>)

возвращает строку, адрес, собранную из отдельных значений

>>> urlunsplit(('http', 'ilnurgi.ru:80', '/test.php', '', 'var=5', 'metka'))
'http://ilnurgi.ru:80/test.php?var=5#metka'
class parse.ParseResult

результат парсинга адреса

scheme

название протокола

netloc

название домена вместе с номером порта

path

путь

hostname

название домена в нижнем регистре

port

номер порта

params

параметры

query

строка запроса

fragment

якорь

username

имя пользователя

password

пароль

geturl()

возвращает адрес

class parse.SplitResult

результат парсинга адреса