Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
#MTL/USDT analysis :
#MTL is in an uptrend, consistently making new highs while finding support above the 200 EMA. After liquidating long positions, the price has reclaimed the 200 EMA and is now moving upward. It is expected that the price will maintain its bullish momentum and test higher levels.
TF : 15min
Entry : $1.529
Target : $1.589
SL : $1.488
#MTL/USDT analysis :
#MTL is currently in a downtrend, trading below the 200EMA. The price is consolidating sideways within a correction phase. It is expected that the bearish momentum will continue soon, potentially testing newer lows. For a short entry, wait for a pullback and retest of the zone.
TF : 1D
Entry : $1.047
Target : $0.765
SL : $1.223
#MTL/USDT analysis :
#MTL is presently consolidating above the support zone and the 200 EMA. It is expected to maintain its bullish momentum and retest the previous swing high.
TF : 2H
Entry : $0.977
Target : $1.035
SL : $0.938