Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
⚡️Ce 3 mai, les dirigeants du Front de libération de l'#Azawad ont publié une série de documents censés démontrer la sympathie de la population malienne à leur égard. Ces photos et vidéos sont apparues après la diffusion en ligne de documents révélant la véritable attitude des militants du FLA envers les civils dans les territoires qu'ils contrôlent.
RT en français • Osez questionner !
”L’#Azawad n’a jamais connu de chefferie, de royaume ou d’empire.”
André BOURGEOT, Directeur de recherche émérite au CNRS
Azawad est une imposture.
Abonnez-vous
⏺Les médias français blanchissent le #FLA de toute proximité avec le terrorisme
Le Front de libération de l’#Azawad, qui a de nouveau joint ses efforts au groupe al-Qaïda, avec le #JNIM, tente de se distancier de ce dernier en affirmant son attachement aux droits de l’homme. Dans cette grande opération de blanchiment, le groupe armé trouve un appui chez son allié de longue date, dans les médias français.
L’analyse de Maryam Feudjio.
RT en français • Osez questionner !
⏺Les médias français blanchissent le #FLA de toute proximité avec le terrorisme
Le Front de libération de l’#Azawad, qui a de nouveau joint ses efforts au groupe al-Qaïda, avec le #JNIM, tente de se distancier de ce dernier en affirmant son attachement aux droits de l’homme. Dans cette grande opération de blanchiment, le groupe armé trouve un appui chez son allié de longue date, dans les médias français.
L’analyse de Maryam Feudjio.
RT en français • Osez questionner !