Какой алгоритм мне лучше использовать?

Пишу свою библиотеку на python для создания веб-приложений. Сейчас делаю классы и функции, которые должны сравнивать запрашиваемый url, и url который записан в специальном файле (urls.py). Проблема с динамическими путями, не знаю как лучше распарсить строку и вытащить из неё данные. Допустим у есть такой путь:

/api/v1/news/detail/int:id/

Этот пусть записан в файле urls.py. Последний параметр int:id означает, что на этом месте может быть любое число типа integer. id - это название аргумента в который нужно передать значение в функцию (не играет никакой роли сейчас). Представим, что на сервер поступает запрос по такому пути:

/api/v1/news/detail/1/

Нужно проверить, чтобы он соответствовал пути в urls.py. С этим проблем нет, сервер при запуске составляет регулярные выражения для всех путей и при запросе проверяет, соответствует ли запрашиваемый путь одному из регулярных выражений. Вопрос как вытащить из этого пути именно значение id? Я конечно знаю как, крутить вертеть туда сюда вырезая всё ненужное и сплитить. Сейчас пришёл к такому варианту - берётся оба пути /api/v1/news/detail/1/ и /api/v1/news/detail/int:id/. к обоим применяется метод split. Получаю 2 списка. Удаляю из них одинаковые элементы. Оставшиеся элементы по порядку попарно соединяю в словарь и получаю {'id': '1'}. Но мне кажется это не совсем быстро и есть какой-то более быстрый и элегантный способ. Я не прошу код, просто натолкните на мысль, как можно сделать лучше. Если есть какие-то повторяющиеся действия (например составить регулярные выражения), то можно их можно выполнять до запуска сервера и сохранять в переменные необходимую информацию.

P.S. Не нужно мне предлагать всякие джанги и aiohttp, не хочу я их использовать! НЕ ХОЧУ!!!


Ответы (1 шт):

Автор решения: Sergei Kirjanov
m = re.match(r'(?P<first>\w+) (?P<last>\w+)', 'Jane Doe')
m.groupdict()
{'first': 'Jane', 'last': 'Doe'}
→ Ссылка