Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
#RepubblicaCeca#Presidenziali
La terza classificata al primo turno delle presidenziali ceche, Danuše #Nerudová, ha annunciato il suo supporto al candidato Petr #Pavel per il ballottaggio che si svolgerà il 26 e 27 Gennaio: “Abbiamo bisogno di un presidente che sostenga lo sviluppo della cultura politica. È importante che i temi rilevanti per i giovani, come l’inaccessibilità economica degli alloggi, il matrimonio per tutti, l’apertura delle forbici tra religioni, rimangano nello spazio pubblico.”
@OsservatorioEsteri
#RepubblicaCeca
Premier Petr #Fiala (#SPOLU/#ODS|ECR): "La Repubblica Ceca ha riserve di petrolio per tre mesi, di gas per due mesi estivi e riserve nucleari per un periodo fino a tre anni. Per l’esattezza, le riserve di petrolio ceche sono pari a 94 giorni. Per quanto riguarda le riserve di gas, faremo quanto necessario per riempirle prima del prossimo inverno."
@UltimoraPolitics
#RepubblicaCeca#Polonia
Il Primo Ministro ceco Petr #Fiala (#SPOLU/#ODS|ECR) ha incontrato il Presidente polacco Andrzej #Duda. Focus dell'incontro la sicurezza energetica dei due paesi. I due hanno riaffermato la loro determinazione a continuare a sostenere l'Ucraina.
@UltimoraPolitics
#RepubblicaCeca#Taiwan
Per la prima volta dopo il de-riconoscimento di Taiwan da parte della maggioranza degli Stati della comunità internazionale, un Capo di Stato di un Paese #NATO partecipa ad un evento pubblico con un Ministro degli Esteri taiwanese.
Si tratta del Presidente ceco Petr #Pavel e del Ministro taiwanese Joseph #Wu (#DPP|Centro-sinistra): Reuters la definisce una “svolta diplomatica”.
@OsservatorioEsteri
#Germania#RepubblicaCeca#Russia
Come rivelato dal portale ceco “Denikn”, cinque fonti del gabinetto ceco hanno informato di una registrazione audio resa nota dal generale di controspionaggio ceco Michal #Koudelka la scorsa settimana alla riunione classificata del governo ceco.
Tale registrazione riproduce un audio del membro tedesco del Bundestag Petr #Bystroň (#AfD|ID) che riceve denaro dalle spie russe. Bystroň è il portavoce della politica estera di AfD al #Bundestag.
@OsservatorioEsteri