Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
A newly created wallet withdrew 139,557 $HYPE worth $5.49M from #Gate. Address: 0xee0a18b394ece1d7be81be15d6cec3ac7707b71c https://x.com/OnchainLens/status/2034936951275757877 Follow @onchainlens for more onchain updates
A newly created wallet withdrew 139,557 $HYPE worth $5.49M from #Gate.
Address: 0xee0a18b394ece1d7be81be15d6cec3ac7707b71c
https://x.com/OnchainLens/status/2034936951275757877
Follow @onchainlens for more onchain updates
After being dormant for 8 months, a whale deposited 2,11,343 $TRUMP worth $847.4K into #Gate, losing $1.28M.
The whale initially withdrew these $TRUMP for $2.13M from #Gate.
The whale also holds 18,787 $SOL ($1.66M), losing $1.62M.
Address - 7HqAk2h4cJZqyKdbzKEqm4JeWBnKMitVrwFMoEgqE93D
https://x.com/OnchainLens/status/2033095024649601045
Follow @onchainlens for more onchain updates
Wallet 0x011 (likely @ambergroup_io) withdrew 3M $SAFE ($6.72M) from #Gate.io at $2.25 for the first time 6 hours ago.
Notably, the $SAFE price has dropped ~36% since it became transferrable on April 23, 2024. Was this a good entry? 🤔
Follow @spotonchain and set alerts for Amber Group now via https://platform.spotonchain.ai/en/entity/80