Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
❗️🇪🇺🇮🇹#Europee2024 — Record storico dell'astensione: per la prima volta, meno di un italiano su due è andato a votare per le Europee. L'affluenza definitiva è del 49,69%
@UltimoraPolitics
❗️🇪🇺🇮🇹#Europee2024 — Stop alla campagna elettorale in Italia, al via il silenzio elettorale. Da domani pomeriggio chiamati al voto oltre 51 milioni di italiani.
@UltimoraPolitics
🇪🇺🇳🇱#Europee2024 — Urne aperte nei Paesi Bassi, ufficialmente al via le elezioni europee. Sarà possibile votare fino alle 21, I risultati saranno divulgati solamente domenica notte, dopo la chiusura delle urne in Italia.
@UltimoraPolitics
🇪🇺#Europee2024 — Voto anticipato in Scandinavia e nei Baltici, 2.27 milioni di europei hanno già espresso il loro voto, pari allo 0.63% degli elettori europei. Domani al via con gli election day, inizieranno i Paesi Bassi
@UltimoraPolitics
#Europee2024 - Il direttore del Tg La7 Enrico Mentana rende noto che sulla rete si terranno due confronti televisivi tra i leader delle liste. I confronti avranno luogo mercoledì 5 e giovedì 6 giugno alle 21.20, il 6 giugno saranno presenti i rappresentanti delle liste maggiori basandosi sull’ultimo sondaggio divulgato da Swg.
Mentana ha fatto sapere di essere in attesa di risposta dai partecipanti invitati.
@UltimoraPolitics
🇪🇺#Europee2024 — domani, 5 maggio è il termine ultimo per presentare la richiesta di voto fuori sede da parte degli studenti universitari che desiderano votare alle prossime elezioni del 8-9 giugno. È necessario fornire (fisicamente, per via telematica o per delega) all’ufficio elettorale del proprio comune di residenza:
📌copia del documento di identità
📌copia della tessera elettorale
📌copia di un documento che attesti l’iscrizione all’università
📌l’apposito modulo compilato, disponibile al seguente link (https://www.interno.gov.it/sites/default/files/2024-04/circ-dait-027-servelet-05-04-2024-all1.pdf)
Il comune di domicilio rilascerà, entro il 4 giugno 2024, un'attestazione di ammissione al voto con l'indicazione del numero e dell'indirizzo della sezione presso cui votare. Bisognerà portare la tessera elettorale cartacea. ❗️
⚪️Se il comune di domicilio è nella stessa circoscrizione del comune di residenza, si vota direttamente nel comune di temporaneo domicilio
⚪️Se il comune di domicilio è in una circoscrizione diversa diversa da quella a cui appartiene il comune di residenza, si vota presso sezioni speciali istituite presso il comune capoluogo della regione alla quale appartiene il comune di temporaneo domicilio.
🇪🇺 #Europee2024 — Stati Uniti d'Europa: Renzi firma l'accordo con la Nuova Democrazia Cristiana. La neoformazione di Renzi e Bonino accoglie Cuffaro e Francesca Donato @UltimoraPolitics
🇪🇺#Europee2024 — Stati Uniti d'Europa: Renzi firma l'accordo con la Nuova Democrazia Cristiana. La neoformazione di Renzi e Bonino accoglie Cuffaro e Francesca Donato
@UltimoraPolitics
🇪🇺#Europee2024 — Quasi fatta per la lista Stati Uniti d'Europa, verso l'accordo Renzi-Bonino. Dentro la lista anche i LibDem di Marucci
@UltimoraPolitics