Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
✅✅✅✅ Cats & Dogs (😺 + 🦴) = $FOOD NEW Airdrop for all Partnership with #Memefi
✉️ You get rewarded for how many days you've been on Telegram
👉 New users join to Get $FOOD for checking 8 hours once :- https://t.me/catsdogs_game_bot/join?startapp=1048396301
➖ Allocation Depends On Your Telegram Age
➖ Choice Cats or Dogs Every 8 Hours
➖ Complete Tasks to earn more $FOOD for your CATS/DOGS
Secret Code for MemeFi ✅
Tap sequence:
1. Head
2. Legs
3. Head
4. Legs
Watch the video!
+2,000,000🪙
⚫️@memefi_coin_bot
#MemeFi
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
🏆Top 23 projects where you can earn $.
Secret Code for MemeFi ✅
Tap sequence:
1. Head
2. Legs
3. Head
4. Legs
Watch the video!
+2,000,000🪙
⚫️@memefi_coin_bot
#MemeFi
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
🏆Top 23 projects where you can earn $.
🐻Secret tap combo for #MemeFi !!
Claim 1,000,000 coins:
https://t.me/memefi_coin_bot
- Tap from head to toe 4 times.
Watch the video!
I will choose three active participants and send them money for tea and cookies (88 ANON each, $1.2). Daily reward from
🪙 PromoX I'm waiting for game stories, videos, memes, etc. Write here.👈👈
°°°°
В чате Memefi подняли вопрос о причастности администрации к такому проекту, как Igu Verse. Я начал задавать вопросы, в результате меня забанили в чате.
#memefi
Пошел собирать инфу
🪙MemeFiDaily Combo for November 2!(Same as yesterday)
You need to press four places in the correct order, after which you will be given 1,500,000
💸
Press in the following order:
1️⃣💛3️⃣💛3️⃣💛2️⃣💛4️⃣
After tapping, wait 5-10 seconds to receive your reward.
🔔Subscribe👉Join MemeFi
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️
#memefi#dailycombo#combo
🪙MemeFiDaily Combo for October 22!(Same as yesterday)
You need to press four places in the correct order, after which you will be given 1,500,000
💸
Press in the following order:
1️⃣💛3️⃣💛3️⃣💛2️⃣💛4️⃣
After tapping, wait 5-10 seconds to receive your reward.
🔔Subscribe👉Join MemeFi
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️
#memefi#dailycombo#combo
🪙MemeFiDaily Combo for October 16!
You need to press four places in the correct order, after which you will be given 1,500,000
💸
Press in the following order:
1️⃣💛3️⃣💛4️⃣💛2️⃣💛3️⃣💛2️⃣
After tapping, wait 5-10 seconds to receive your reward.
🔔Subscribe👉Join MemeFi
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️
#memefi#dailycombo#combo
🪙MemeFiDaily Combo for September 27!(Same as yesterday)
You need to press four places in the correct order, after which you will be given 1,000,000
💸
Press in the following order:
4️⃣💛2️⃣💛4️⃣💛2️⃣
After tapping, wait 5-10 seconds to receive your reward.
🔔Subscribe👉Join MemeFi
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️
#memefi#dailycombo#combo