Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
📩#ZROUSDT 30m | Mid-Term
📈Short Entry Zone: 2.2664-2.3691
🎯 - Strategy Accuracy: 92.26%
Last 5 signals: 80.0%
Last 10 signals: 85.0%
Last 20 signals: 87.18%
⏳ - Signal details:
Target 1: 2.2358
Target 2: 2.2052
Target 3: 2.1746
Target 4: 2.0828
_____
🧲Trend-Line: 2.3691
❌Stop-Loss: 2.4010
💡After reaching the first target you can put the rest of the position to breakeven
📩#ZROUSDT 30m | Mid-Term
📈Short Entry Zone: 2.1676-2.3075
🎯 - Strategy Accuracy: 93.28%
Last 5 signals: 87.5%
Last 10 signals: 92.31%
Last 20 signals: 86.96%
⏳ - Signal details:
Target 1: 2.1264
Target 2: 2.0851
Target 3: 2.0439
Target 4: 1.9202
_____
🧲Trend-Line: 2.3075
❌Stop-Loss: 2.3514
💡After reaching the first target you can put the rest of the position to breakeven
#ZROUSDT has achieved 9th TP in 8 hours in our VIP PRO channel!
Using a 5% entry you could've earned $619 with a $1000 deposit
ACCESS TO MANUAL TRADING for 70usdt/month
👉 We ain't just showing our results, we can show you the results of our VIP subscribers as well! Check them out: @propheta_reviews
Register and get bonuses up to $6,000
Binance | OKX | ByBit👈🏻click!
#tradingindicator#trading#btc
👆 Propheta living up to its name yet again 🔮
#ZROUSDT has achieved 9th TP in our VIP PRO channel!
$608 in profits with a 5% entry and a $1000 deposit!
Feels good to be a Propheta VIP, man... 🏖ACCESS TO MANUAL TRADING for 70usdt/month
⚡️Speed up your trading with Propheta AI Signals: real-time precision signals, elite-level automation, and Cornix integration — the future of trading is now! GET THE ACCESS TO AI SIGNALS
Register and get bonuses up to $6,000
Binance | OKX | ByBit👈🏻click!
#cryptoexchange#cryptocurrency#AItrader
#ZROUSDT UPDATE:
#ZRO is now currently trading around $1.4290. It has already broken out of the Falling Wedge pattern and is looking good. So if the price pumps from here, then we can see short-term bullish momentum in it according to the pattern. If the breakout is a fake out, then it may again trade inside the pattern. Keep an eye on it.
0⃣#ZRO + #Tether = 🚀🚀🚀
Tether recently invested in #LayerZero, and you know they don't drop cash without deep due diligence. 🕵️♂️ The fundamentals are rock solid.
This rally is just the beginning. 🌤 I’m stacking as much $ZRO as possible. targeting 2x - 5x gains! 💸
Get in or get left behind.👋
#DeFi#BullRun $ZRO #ZROUSDT
https://x.com/CryptoBull_360/status/2021403228970315928?s=20