Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
DRDO Chief Dr. Samir V Kamat has inaugurated a Compo-Rheo Die Casting (CRDC) facility at IISc-Bengaluru Campus for producing high-performance alloys.
CRDC is an advanced hybrid metallurgical process that combines elements of Composite material fabrication & Rheocasting to produce high-performance metal matrix composites.
#aatmarnirbharbharat
Mishra Dhatu Nigam Limited (MIDHANI) has inaugurated a state-of-the-art Aerospace Fasteners Facility in Hyderabad, marking its transition into a fully integrated manufacturer of high-precision components for extreme environments, including titanium and superalloy fasteners. By maintaining 100% in-house production and hosting resident inspection agencies, the facility ensures stringent quality control and compliance for the defense and aerospace sectors.
Source
#aatmarnirbharbharat#defence
DRDO Chairman Dr Samir V Kamat said the Ghatak UCAV will be comparable to a stealth fighter in capability. "They will be like fighters, they would be a stealth fighter... about a 13-ton class... LCA type fighter aircraft," Kamat said, adding that a recent proposal cleared by the Defence Procurement Board envisages induction of around 67 such systems. #Defence#aatmarnirbharbharat
BDL achieved a major milestone in indigenous defence manufacturing with the delivery of India’s first Production-Grade Wire Guided Heavy Weight Torpedo to NSTL at Visakhapatnam. #Defence#aatmarnirbharbharat
Vadodara-based INOX India has flagged-off the 'simulated Liquid Oxygen (LOX) Storage Module' to DRDO (NMRL) for India’s first indigenous AIP System. #Defence#aatmarnirbharbharat
Hyderabad-based ZenT echnologies has received a licence to manufacture 12.7mm, 23mm, 30mm & 40mm air defence guns to defend from low flying targets. #Defence#aatmarnirbharbharat
HAL has inaugurated a LCH Prachand (156 on order) Structure Assembly Line and an Automated Storage & Retrieval System (ASRS) at Tumakuru (Karnataka) today. #Defence#aatmarnirbharbharat
Union Cabinet approves Bharat Maritime Insurance pool (BMI pool) with a sovereign guarantee of Rs 12,980 crore to facilitate continuous maritime insurance coverages: I&B Minister Ashvini Vaishnav
This will reduce dependence on foreign insurance providers for maritime transport #Policy#aatmarnirbharbharat
Atomberg Tech introduces 1st Generation Drone Propulsion Systems.
An excellent step towards becoming 'Atmanirbhar' in #drones. Presently most of these propulsion systems are imported. #aatmarnirbharbharat
Delhi-based dpropulse is building India's first rotating detonation engine (RDE).
#Aviation#aatmarnirbharbharat
https://fxtwitter.com/i/status/2044030717123014797