Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> text = '''
>>> Alex:8999123456
>>> Mike:+799987654
>>> Oleg:+344456789
>>> '''
Соответственно, для выделения нужных элементов будем использовать группы. Получится такой паттерн:
(\w+):([\d+]+)
Как мы будем формировать словарь из найденных групп?
>>> import re
>>> results = []
>>> for match in re.finditer(r"(\w+):([\d+]+)", text):
>>> results.append({
>>> "name": match.group(1),
>>> "phone": match.group(2)
>>> })
>>> print(results)
[{'name': 'Alex', 'phone': '8999123456'}, ...]
Можно немного сократить запись используя zip
>>> results = []
>>> for match in re.finditer(r"(\w+):([\d+]+)", text):
>>> results.append(dict(zip(['name', 'phone'], match.groups())))
Но есть способ лучше! Это именованные группы в regex. Можно в паттерне указать имя группы и результат сразу забрать в виде словаря.
>>> for match in re.finditer(r"(?P<name>\w+):(?P<phone>[\d+]+)", text):
>>> results.append(match.groupdict())
То есть всё что я сделал, это добавил в начале группы (внутри сбокочек) такую запись:
(?P<group-name>...)
Теперь найденная группа имеет имя и можно обратиться к ней как к элементу списка
>>> name = match['name']
Либо забрать сразу весь словарь методом groupdict()
>>> match.groupdict()
#tricks#regex
Премьер-министр Сербии Джуро Мацут сегодня провел переговоры с новым послом Украины в Белграде Александром Литвиненко
Глава правительства заявил, что Белград с особым вниманием следит за событиями на территории Украины и сложной гуманитарной ситуацией, касающейся гражданского населения.
«Сербия, в пределах своих возможностей, продолжит направлять гуманитарную помощь уязвимому населению в виде финансовых ресурсов, медицинского и электроэнергетического оборудования», – добавил Мацут.
Литвиненко поздравил премьер-министра с прошедшим Днём государственности страны и поблагодарил Сербию за все, что она сделала для украинского народа.
#Beograd#Srbija#Ukrajina
@NewsSerbia
На улице Косовской в Белграде местные жители встали перед экскаватором, пытаясь остановить строительные работы
Дорогу собираются сделать двусторонней, но жители заявляют, что им практически ничего не известно о проекте – нет доступной документации, чёткого плана и оценки последствий его реализации.
По их мнению, улица и без того перегружена транспортом. Они требуют от властей ответы на вопросы о шуме, загрязнении, вырубке деревьев и сокращении парковочных мест.
#Beograd#Kosovska#protest
@NewsSerbia
Дорожная сводка, 31 марта Белград: Дорожные работы и ограничения
• Novi Beograd (Tošin bunar / Dr Žorža Matea): Продолжается полное закрытие участка улицы Dr Žorža Matea до 9 апреля. Также ограничено движение на Tošin bunar (между Pariske komune и Džona Kenedija).
• Autokomanda (M11): Санация опор путепровода. До 24 мая закрыта крайняя правая полоса в сторону Нового Белграда.
• Takovska (Centar): Ремонт дорожного полотна продолжается. Улица частично раскопана, работы продвинулись ко второй фазе в сторону Trg Nikole Pašića.
• Surčin (Trg Zorana Đinđića): Работы на водопроводе и канализации (фазы 1B и 2). Изменен режим движения на центральной площади Сурчина.
⚡️ Отключения.
Сегодня запланированы масштабные отключения электричества, которые могут затронуть работу светофоров:
• Vračar (08:30 – 10:30): ул. Kneginje Zorke и Svetog Save.
• Zemun / Novi Beograd (08:30 – 13:30): улицы Aleksandra Dubčeka, Bulevar Mihajla Pupina (18-24), Džona Kenedija и Palmira Toljatija.
• Zvezdara (09:00 – 13:30): Район улиц Vojvode Bogdana, Zahumska и Ćirila i Metodija.
🚍 Изменения в общественном транспорте
• Автобусы: Маршруты 72, 74, 75, 76, 77, 708 и 72N продолжают ходить в объезд закрытых участков в Новом Белграде.
• Троллейбусы: На линии 40 временно отменена остановка «Glavna pošta» из-за работ в Таковской.
• Трамваи: Маршруты 7L, 9L и 13 всё еще следуют по измененным путям из-за работ на мосту над ул. Antifašističke borbe. Подписывайтесь на @roadgoserbia чтобы быть в курсе событий. #Белград#roadgosrbia#дорогибелград#сербия#beograd
Дорожная сводка, пятница 3 апреля 📅🚗.
🚧 Дорожные работы:
• Tošin bunar: ремонт между Pariske komune и Džona Kenedija вызывает задержки ⏳.
• Autokomanda (M11): закрыта правая полоса к Новому Белграду; пробки со стороны Južni bulevar 🚗🐢.
• Takovska: затруднен проезд у Trg Nikole Pašića. Объезд: Starine Novaka или Ruzveltova 🛣️.
• A1 (Bubanj Potok): ожидается трафик на пункте оплаты. TAG-устройства для грузовиков (IV категория) работают, возможны замедления 🚛.
• Ralja (I B 14): работы на электросетях у перекрестка для Kolare в светлое время ⚡☀️.
🚍 Транспорт:
• Автобусы 72, 75, 76, 77, 708 и A1: объезд на Тошином Бунаре 🔄.
• Трамваи 7L, 9L, 13: измененные схемы из-за работ на путепроводе над ул. Antifašističke borbe 🚋. Подписывайтесь на @roadgoserbia будьте в курсе событий. #дорогибелград#beograd#жизньвсербии#roadgosrbia
⚡️БЕОГРАД — Обдукциони налаз о смрти студенткиње Филозофског факултета показао је да је смрт настала услед повреда приликом пада
Обдукциони записник са токсиколошком анализом показао је да није детектовано присуство лекова или других психоактивних супстанци.
** Више јавно тужилаштво у Београду наставља предистражни поступак поводом смрти и околности под којима је дошло до паљења пиротехничких средстава.
→ Линк: /t.me/borbeni_efektivi
→ Извор: /t.me/borbeni_efektivi
🪖#Beograd〣#FilozofskiFakultet〣#smrt〣#obdukcija〣#povrede〣#toksikologija〣#istraga〣#pirotehnika
🇷🇸https://t.me/borbeni_efektivi