Вытащить из URL значение code параметра в query используя регулярное выражение

294 просмотра
0

Помогите вытащить из URL значение code

import re
 
url = https://xxx.omsk.ru/?code=884gdczv72ka3kkco6sxoen2ugp380y1&state=&domain=xxx.omsk.ru
 
code = re.findall(r'code=\w+', r.url)
print(code)

я получаю вывод print code=884gdczv72ka3kkco6sxoen2ugp380y1
мне бы вывести без ‘code=’, одно значение


Добавить комментарий

2 Answers

Python Опубликовано 16.12.2018
0

Самый простой вариант это использовать substr и не переписывать регулярное выражение:

code[5:]

Прочитать про него и посмотреть примеры можно по ссылке

Добавить комментарий
0

Используйте готовые классы и методы, доступные в модуле urlparse:

import urlparse
url = 'https://xxx.omsk.ru/?code=884gdczv72ka3kkco6sxoen2ugp380y1&state=&domain=xxx.omsk.ru'
parsed = urlparse.urlparse(url)
print(urlparse.parse_qs(parsed.query)['code'])

См. демо

В ознакомительных целях добавлю пример регулярного выражения, которое часто используется в JavaScript:

[&?]code=([^&]+)

Демо регулярного выражения

  • [&?] — 1 символ, либо ?, либо & ([...] — это символьный класс, который используется для поиска диапазонов символов или же отдельных, конкретных символов)
  • code= — последовательность символов (т.е. подстроку) code=
  • ([^&]+) — Захватывающая группа №1, находит 1 и более символов, отличных от & (тут [^...] — это исключающий символьный класс, с помощью которого осуществляется поиск любых символов, отличных от определённых в классе).

Демо в Python:

import re
url = 'https://xxx.omsk.ru/?code=884gdczv72ka3kkco6sxoen2ugp380y1&state=&domain=xxx.omsk.ru'
m = re.search(r'[&?]code=([^&]+)', url)
if m:
    print(m.group(1))

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up