Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
✅Системно управлять проектами на всех этапах — от инициации до завершения;
✅строить реалистичные планы по срокам, бюджету и ресурсам;
✅эффективно управлять командой, рисками, контролировать качество и вести прозрачную коммуникацию.
🚀 Эти важнейшие компетенции отличают нашего эксперта – Алексея Летуновского, руководителя проектного консалтинга и управления данными CMWP Uzbekistan, ориентированного на результат и создание ценности для бизнеса.
🤝Мы ценим Алексея, как эксперта, который не просто "делает" проект, а руководит им, минимизируя хаос и потери.
🏅Теперь это подтверждено официально сертификацией PMP!
🌐Международная сертификация по управлению проектами PMP, выданная Project Management Institute [PMI, США] подтверждает, что специалист обладает опытом, знаниями и навыками управления проектами по стандартам PMBOK® Guide [Project Management Body of Knowledge], гарантирующим структурированный подход к проектам любой сложности.
🙂 Команда CMWP Uzbekistan усилила свою экспертизу еще одним специалистом, подтвердившим свой профессионализм признанной в мире сертификацией.
🏆ПОЗДРАВЛЯЕМ, ДОРОГОЙ АЛЕКСЕЙ, ГОРДИМСЯ ТВОИМИ ДОСТИЖЕНИЯМИ!
#CMWPэксперт#CMWPэкспертиза#сертификация#PMP#ProjectManagement
#Romania🇷🇴
#Presidenziali
Nicușor #Dan, 55 anni, è originario di Făgăraș (Transilvania). È Sindaco di Bucarest dal 2020. In precedenza è stato anche deputato per la Capitale dal 2016 al 2020. Fu tra i fondatori del partito Unione Salvate la Romania (#USR|RE), di cui è stato anche Presidente tra il 2016 e il 2017; ha fondato il partito come continuazione del progetto "Unione Salvate Bucarest". È uscito dal partito il 1° giugno 2017 ed è quindi rimasto un indipendente. Dan è sostenuto dall'USR, da Forza della Destra (#FD|PPE), dal Partito #DREPT|Centro anticorruzione, dal Partito del Movimento Popolare (#PMP|PPE), da Rinnoviamo il Progetto Europeo della Romania (#REPER|RE) e da altri partiti minori.
@TuttoElezioni
#Elezioni#Romania#Presidenziali
Risultati definitivi:
Affluenza: 64,72% (+9,86 rispetto al 2019)
Nicușor #Dan (supp. #USR-#DREPT-#PMP-#FD-#REPER-#PRA-#Verzii|EPP|RE|G/EFA): 53,6%
George #Simion (#AUR|ECR): 46,4%
Nicușor Dan eletto nuovo Presidente della Romania.
In foto, la mappa del voto.
@OsservatorioEsteri
#Elezioni#Romania#Presidenziali
Risultati definitivi:
Affluenza: 53,21% (+0,65 rispetto al 2024)
George #Simion (#AUR|ECR): 40,96%
Nicușor #Dan (supp. #USR-#DREPT-#PMP-#FD-#REPER-#PRA-#Verzii|EPP|RE|G/EFA): 20,99%
Crin #Antonescu (supp. #ARo|S&D|EPP): 20,07%
Victor #Ponta: 13,04%
Elena #Lasconi (#USR|RE): 2,68%
Lavinia #Șandru (#PUSL|Centro umanista populista): 0,64%
Daniel #Funeriu: 0,43%
Cristian #Terheș (#PNCR|ECR): 0,39%
Sebastian #Popescu (#PNR|Populisti): 0,28%
John Ion #Banu: 0,23%
Silviu #Predoiu (#PLAN|Centro): 0,18%
Necessario un secondo turno tra Simion e Dan.
In foto, la mappa del voto.
@OsservatorioEsteri