Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
📩#ENAUSDT 1h | Mid-Term
📉Long Entry Zone: 0.3388-0.3188
🎯 - Strategy Accuracy: 93.16%
Last 5 signals: 100.0%
Last 10 signals: 91.67%
Last 20 signals: 95.45%
⏳ - Signal details:
Target 1: 0.3439
Target 2: 0.3490
Target 3: 0.3540
Target 4: 0.3693
_____
🧲Trend-Line: 0.3188
❌Stop-Loss: 0.3140
💡After reaching the first target you can put the rest of the position to breakeven
📩#ENAUSDT 1h | Mid-Term
📉Long Entry Zone: 0.3974-0.3801
🎯 - Strategy Accuracy: 93%
Last 5 signals: 100%
Last 10 signals: 90%
Last 20 signals: 95%
⏳ - Signal details:
Target 1: 0.4034
Target 2: 0.4093
Target 3: 0.4153
Target 4: 0.4332
_____
🧲Trend-Line: 0.3801
❌Stop-Loss: 0.3744
💡After reaching the first target you can put the rest of the position to breakeven
📩#ENAUSDT 1h | Mid-Term
📉Short Entry Zone: 0.1189-0.1242
🎯 - Strategy Accuracy: 94.26%
Last 5 signals: 100.0%
Last 10 signals: 100.0%
Last 20 signals: 100.0%
⏳ - Signal details:
Target 1: 0.1175
Target 2: 0.1160
Target 3: 0.1146
Target 4: 0.1103
_____
🧲Trend-Line: 0.1242
❌Stop-Loss: 0.1257
💡After reaching the first target you can put the rest of the position to breakeven
#ID20000036639
📩#ENAUSDT 1h | Mid-Term
📈Long Entry Zone: 0.1737-0.1678
🎯 - Strategy Accuracy: 94.11%
Last 5 signals: 100.0%
Last 10 signals: 100.0%
Last 20 signals: 100.0%
⏳ - Signal details:
Target 1: 0.1758
Target 2: 0.1779
Target 3: 0.1800
Target 4: 0.1862
_____
🧲Trend-Line: 0.1678
❌Stop-Loss: 0.1658
💡After reaching the first target you can put the rest of the position to breakeven
#ID20000036408
📩#ENAUSDT 1h | Mid-Term
📈Long Entry Zone: 0.2118-0.2024
🎯 - Strategy Accuracy: 83.44%
Last 5 signals: 90.0%
Last 10 signals: 85.0%
Last 20 signals: 77.5%
⏳ - Signal details:
Target 1: 0.2150
Target 2: 0.2182
Target 3: 0.2213
Target 4: 0.2309
_____
🧲Trend-Line: 0.2024
❌Stop-Loss: 0.1994
💡After reaching the first target you can put the rest of the position to breakeven
#ID20000035694
👀 Well, would you look at that! 👆
#ENAUSDT has just reached 9th TP in the VIP CLUB channel!!!👍
With a 5% entry and a $1000 deposit, you could've earned $461!
Every day we're on fire! 🔥🔥🔥ACCESS TO MANUAL TRADING for 70usdt/month
👉 Not sure? Considering? Contemplating? Come have a look at our performance reports, spend about5 minutes and see for yourself that everything is 100% legit! @propheta_reports
Register and get bonuses up to $6,000
Binance | OKX | ByBit👈🏻click!
#AItrader#cryptobot#cryptochannel