Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
Gatto Channel: June Events Calendar
#calendar#events
Gatto | Official Channel (18+) has released a calendar of regular events for June. Collaborations, raffles, and secret events are not listed, requiring subscribers to stay tuned for further announcements.
Source: link
@tonlines
In 46 BC, Julius Caesar added 90 extra days to the year, making it 445 days long. This was done to fix the calendar’s drift from the solar year. The previous calendar was out of sync with the seasons. Caesar introduced the Julian calendar, which included leap years every four years to keep the calendar aligned with the sun.
📅🔧
[Read more]
@googlefactss
#History#Calendar#LeapYear
🌍 Samoa famously skipped December 30, 2011, to switch from the eastern to the western side of the International Date Line. This move aligned its calendar with Australia and New Zealand. ✨
#Samoa⚡#dateline⚡#calendar⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
📅 Calendar Stickers 📅
https://telegram.me/addstickers/Calendar2016
#Calendar#Useful#Hacks
🛠 It could be useful (or even some sort of a lifehack) for users.
Fokus
To Do app tailored specifically for #students
Fokus is an open source application that combines a #todo list and a #calendar that can help you manage your #school related #work and #events in one place. It's fast and beautiful yet simple design that can help you focus on what matters most.
Features:
• Get reminded when a task is nearing its due
• Get reminded about incoming events
• Add attachments to your tasks
• Persistent notifications for important tasks or events
• No ads or any tracking
• Open Source Code
• On-Device Database
Download: https://github.com/icabetong/fokus-android/releases/
https://github.com/icabetong/fokus-android
@foss_Android