Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
#Italia#Albania
La Presidente del Consiglio, Giorgia #Meloni (#FdI|ECR), ha ricevuto oggi a Palazzo Chigi il Primo Ministro della Repubblica d’Albania, Edi #Rama (#PSSh|S&D).
“A cinque mesi dal Vertice Intergovernativo di Roma, il colloquio ha permesso di fare il punto sul rafforzamento del partenariato tra le due Nazioni nei settori di interesse comune, con un focus particolare su connettività, industria della difesa e collaborazione in materia migratoria”, si legge in una nota.
@OsservatorioItaliano
#Sondaggi
#Albania🇦🇱
#Parlamentari
Sondaggio di MRB-Hellas + Euronews Albania.
Data: 24 aprile-4 maggio 2025.
Campione: 1.600 persone.
🟪 Partito Socialista d'Albania (#PSSh|S&D): 48,2% (+0,3)
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 31,9% (-1,8%)
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 7,9% (+1,2)
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 7,5% (+1,2)
🟥 Movimento Insieme (#LB|Sinistra): 2,0% (-0,4%)
Altri: 2,5%
N.B.: tra parentesi è indicata la variazione rispetto all'ultimo sondaggio del medesimo istituto (10-21 aprile).
@TuttoElezioni
#Sondaggi
#Albania🇦🇱
#Parlamentari
Sondaggio di MRB-Hellas + Euronews Albania.
Data: 10-21 aprile 2025.
Campione: 1.600 persone.
🟪 Partito Socialista d'Albania (#PSSh|S&D): 47,9% (-0,4%)
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 33,7% (-2,3%)
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 6,7% (+0,4%)
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 6,3% (+1,5%)
🟥 Movimento Insieme (#LB|Sinistra): 2,4% (-0,1%)
Altri: 3%
N.B.: tra parentesi è indicata la variazione rispetto all'ultimo sondaggio del medesimo istituto (15-25 febbraio).
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Distribuzione dei seggi.
🟪 Partito Socialista d'Albania (#PSSh|S&D): 83
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 50
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 1
🟥 Movimento Insieme (#LB|Sinistra): 1
Maggioranza: 71 (✅ PSSh)
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 5.214/5.225 (99,79%)
Buste estere scrutinate: 100.835/194.889 (51,74%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,29%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 33,87%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,84%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,23%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 3,10%
🟥 Movimento Insieme (#LB|Sinistra): 1,52%
Altri: 2,15%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 5.088/5.225 (96,82%)
Buste estere scrutinate: 55.798/194.889 (28,63%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,19%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 34,18%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,70%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,32%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 3,02%
🟥 Movimento Insieme (#LB|Sinistra): 1,45%
Altri: 2,14%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 4.919/5.225 (94,14%)
Buste estere scrutinate: 38.806/194.889 (19,91%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,20%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 34,29%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,63%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,40%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2,95%
🟥 Movimento Insieme (#LB|Sinistra): 1,41%
Altri: 2,12%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 3.799/5.225 (72,70%)
Buste estere scrutinate: 25.741/194.889 (13,21%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,51%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 34,01%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,65%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,53%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2,89%
🟥 Movimento Insieme (#LB|Sinistra): 1,36%
Altri: 2,05%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 2.871/5.225 (54,95%)
Buste estere scrutinate: 10.056/194.889 (5,16%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,76%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 33,85%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,82%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,50%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2,80%
🟥 Movimento Insieme (#LB|Sinistra): 1,33%
Altri: 1,94%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 2.241/5.225 (42,89%)
Buste estere scrutinate: 2.010/194.889 (1,03%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,61%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 34,18%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,94%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,38%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2,71%
🟥 Movimento Insieme (#LB|Sinistra): 1,30%
Altri: 1,88%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 1.624/5.225 (31,08%)
Buste estere scrutinate: 1.660/194.889 (0,85%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,80%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 34,29%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,74%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,47%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2,62%
🟥 Movimento Insieme (#LB|Sinistra): 1,25%
Altri: 1,83%
@TuttoElezioni
#Albania🇦🇱
#Parlamentari
Risultati parziali.
Sezioni interne scrutinate: 1.139/5.225 (21,80%)
Buste estere scrutinate: 1.660/194.889 (0,85%)
🟪 Partito Socialista d'Albania (#PSSh|S&D): 52,73%
🟦 Alleanza per una Grande Albania (#ASHM; include #PD|PPE, #PDIU|Destra, #PL e altri partiti): 34,32%
🟥 Partito Socialdemocratico (#PSD|Socialdemocrazia): 3,74%
🟧 Iniziativa Albania Diventa (#NSHB|Centro populista; include #NTH e #LSHB): 3,49%
🟨 Partito dell'Opportunità (#PM|Centro-destra europeista): 2,65%
🟥 Movimento Insieme (#LB|Sinistra): 1,24%
Altri: 1,83%
@TuttoElezioni