Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
#Ko‘kalamzorlashtirish
"Mohi nur kommunal" BSK xodimlari tomonidan kompaniyaga biriktirilgan "Shuhrat" mahallasidagi ko‘pqavatli uylarning atrofidagi yerlarga ishlov berilib, tuprog‘i kam maydonlarga tuproq olib kelib yotqizilmoqda. Ishlov berilgan yashil maydonlarga esa rangbarang gullar ekilmoqda.
Shu o‘rinda "Shuhrat" mahallasida yashovchi tumandoshlarimizdan uylari atrofini toza tutishlarini, ekilgan gullar uy atrofini yanada go‘zal qilib turishi uchun atrof -muhitga yanada e’tiborli bo‘lishlarini, yashil maydondagi o‘simliklarni asrab-avaylashlarini so‘rab qolamiz.
🔵@Chilonzor_tumani_hokimligi
#Ko'rsatuv
🌿''YUKSALISH'' KO'RSATUVINING BU GALGI SONI
SAMARQAND VILOYATIDA JOYLASHGAN KATTAQO'RG'ON TUMANIDAGI ISSIQSUV SIHATGOHI FAOLIYATI HAQIDA
‼️TTV telekanali ‼️
📱Telegram |📱Instagram | 📱YouTube
#Ko'rsatuv
🌿''YUKSALISH'' KO'RSATUVINING BU GALGI SONI
SAMARQAND VILOYATIDA JOYLASHGAN MIRONSHOX SIHATGOHI FAOLIYATI HAQIDA
''YUKSALISH''KO'RSATUVIDA
‼️TTV telekanali ‼️
📱Telegram |📱Instagram | 📱YouTube
#Ko'rsatuv
🌸🌿“XUSH KELDING, BAHOR!” 🌸🌿
🌺 Eng go‘zal va zavqli ko‘rsatuvga marhamat!
Bahorning iliq nafasi, quvonch va yangilanishga boy onlarni biz bilan birga his eting! 🌷
Dilbar kuy-qo‘shiqlar, qadimiy urf-odatlar va ko‘tarinki kayfiyat sizni kutmoqda! 🌞✨
‼️TTV telekanali ‼️
✈️Telegram |🌐Instagram | 📹YouTube