Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
🌎 The axolotl, a salamander native to Mexico, can regenerate entire limbs, spinal cord, heart tissue, and even parts of its brain. Unlike most amphibians, axolotls remain aquatic and gilled for their whole lives due to a trait called neoteny. ✨
#axolotl⚡#regeneration⚡#amphibians
👉subscribe Interesting Planet
👉more Channels
🌎 The axolotl, native to Mexico’s lakes, can regrow lost limbs, parts of its heart, and even sections of its brain. This “walking fish” stays forever young, never fully transforming into adulthood—a rare phenomenon called neoteny. ✨
#axolotl⚡#regeneration⚡#neoteny
👉subscribe Interesting Planet
Hydra, a tiny freshwater animal, can theoretically live forever if nothing eats or kills it. They don't age because they keep regenerating cells.
🧬
[Read more]
@googlefactss#Hydra#Immortal#Regeneration#Science
Axolotls, also known as Ambystoma mexicanum, get their name from the Aztec language Nahuatl, meaning "water monster" or "water god." According to legend, they are the earthly form of Xolotl, the Aztec god who transformed into a salamander to avoid sacrifice. These creatures are famous for regenerating limbs, hearts, and even parts of their brains. They stay in their juvenile form for life, a trait called neoteny. In the wild, axolotls are critically endangered, with fewer than 1,000 left in Mexico’s Xochimilco and Chalco lakes. Habitat loss, pollution, and invasive species like tilapia are major threats. Conservation efforts are underway to restore their habitat and protect them from extinction.
🦎🌍💧
[Read more]
If you have one as a pet, feel free to share with us!
@googlefactss
#Axolotl#WaterGod#EndangeredSpecies#Regeneration#Neoteny#Conservation#Wildlife#Mexico#Amphibians