Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
У нас много традиций: делать крутые кейсы и исследования, играть настолки в офисе и каждый четверг делиться с командой чем-то полезным на demo day. Этим летом появилась ещё одна — aic.weekend.
aic.weekend — это собраться с любимыми коллегами в парке, принести еду и хорошенько отдохнуть. Заняться йогой, вкусно поесть, попеть и потанцевать под музыку aic.band❤️
Именно так мы провели 13 августа 🙌 Смотрите видео, чтобы зарядиться позитивом ✨
#picnic
Thinking about Father's Day plans? Why not organise a memorable picnic? Here are some tips to make it fun and eco-friendly. #FathersDay#EcoFriendly#Picnic#SayYEStoWasteLess
A mini picnic in the park. 🧺
Just being here and now is the best plan for the day.
Мини-пикник в парке. 🧺
Просто быть здесь и сейчас — лучший план на день.
#LunaEverly#Picnic#DayMindset#Park#Simplicity
✔️Attention all picnic lovers!
📌 We're excited to announce a picnic day at the beautiful BELDERSOY location right after Midterm exams. Get ready to spend a fun-filled day surrounded by lush greenery, serene landscapes and the company of great people.
🤩 The best part? This event is fully free for all to join! That's right, all you need to do is show up with a smile on your face and a willingness to have a good time. And, if you're feeling extra peckish, 😊 feel free to bring along your favorite snacks and drinks to share with others.
Don't miss out on this amazing opportunity to enjoy the great outdoors and connect with like-minded people. Spread the word, mark your calendars, and we'll see you at Beldersoy on May 6th! 🌳🌞🧺
🗓 May 6th (Saturday)
⏰ Departure - 6 AM
Return - 6 PM
Best Regards,
Student Government.
#picnic#Beldersoy#May6th#funinthesun