Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
#FIO/USDT analysis :
#FIO is in an uptrend, forming higher highs (HHs) and higher lows (HLs) while trading above the 200 EMA. The price has broken out and retested the previous swing high resistance levels. It is expected to bounce back from this point and continue its bullish momentum to test the recent swing high.
TF : 1D
Entry : $0.0305
Target : $0.0417
SL : $0.0270
#FIO/USDT analysis :
#FIO is currently in an uptrend, forming higher highs (HHs) and higher lows (HLs), while finding support above the trendline. The price is anticipated to rebound from the current level to sustain its bullish momentum and test new highs.
TF : 4h
Entry : $0.0259
Target : $0.0300
SL : $0.0238
#FIO/USDT analysis :
#FIO is currently experiencing a decline from the resistance zone following rejections in that region. It is anticipated to maintain its downward momentum and possibly test previous lows.
TF : 4H
Entry : $0.0198
Target : $0.0162
SL : $0.0210