Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
Последние 5 футболок “United States of Siberia”
Оверсайз / кулирка / печать шелкография
Размеры М, Л, ХЛ, ХХЛ
1500₽
Последняя партия по такой цене
Заказать можно в лс или на сайте.
#bednotown#bednotownfactory#siberia#omsk#unitedstatesofsiberia
Делаем пробник обложки для паспорта с нашим новым принтом. Винил, ткань, ламинация, прошита по контуру. Печать с двух сторон.
Открываем предзаказ со скидкой на первые 50 штук.
Стоимость - 350₽ , после выпуска партии обложка будет стоить 550₽.
Примерная готовность на 04.07, тогда же и начнем высылать заказы.
Предзаказ можно будет оформить здесь в директе , или на нашем сайте.
#bednotown#bednotownfactory#omsk#siberia#damirmuratov#art#siberian#omsk55#омскстолицавселенной
Эскиз нового принта для наших изделий готов
Техника акварель / фломастеры
В скором времени конвертируем в цифру и сделаем предзаказ на футболки
Пишите в личку, если появятся вопросы или предложения
Всем мир ;)
#bednotown#bednotownfactory#omsk#omsk55#siberia#irtysh#damirmuratov#art#modernart#pacific#mountains#palms
Делаем скидку 20% на все флаги. До 1 июля.
Получается united states и united kingdom по 1200₽, а island of freedom - 1600₽.
Размеры все! (У нас много осталось размера 60-это 5хл, его вообще с супер скидкой отдадим)
Заказать можно в директе , или на сайте. При покупке от 2х штук - доп скидка (на сайте эта история тоже работает)
Кстати о способе оплаты - карты у нас на портале принимает система unitpay , если у кого возникают неувязки - дайте знать , пожалуйста. И лучше пишите в директ в таком случае.
Товар распродаем, потому что готовим новое. Всем отличного дня!
#bednotown#bednotownfactory#omsk#unitedstatesofsiberia#unitedkingdomofsiberia#siberiaislandoffreedom#art#siberia#damirmuratov#tshirts#merch#clothes#oversize
Футба «Бритва Омск»
100%хлопок/ классический фасон / печать шелкография
Размеры М-3ХЛ
1500₽
При покупке от 2х штук сделаем хорошую скидку!
В Омске в наличии в @lll.tochka
Заказ можно оформить в директе или на нашем сайте
Отличного дня!
#bednotown#bednotownfactory#omsk#siberia#damirmuratov#merch#print#бритваомск#омск#сибирь#панкрок#punkrock#egorletov
Мы регулярно печатаем футболки вручную через трафареты. Их лично отрисовывает и вырезает @bednotown , а потом мы вместе переносим рисунок на изделие. Футболки можно найти на сайте в разделе «Крафтовая коллекция». Также, обращайтесь в директ, если заинтересует какая позиция.
Печатаем мы акрилом по ткани - это надежно и крепко, да и сам продукт получается эксклюзивным и пропитанным теплотой рук.
Хочешь сделать хорошо - сделай это сам (с)
Хорошего дня, друзья!
#bednotown#bednotownfactory#handmade#tshirt#craft#craftcollection#damirmuratov#omsk#siberia#art#acrylicpainting#decola#sea#sealife#sealovers#exclusive#rarepicture#rare#trafaret#printing