Небольшой трик с регулярными выражениями который редко вижу в чужом коде.
Допустим, вам нужно распарсить простой текст и вытащить оттуда пары имя+телефон. Вернуть всё это надо в виде списка словарей. Возьмем очень простой пример текста.
>>> 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
Partido Comunista de Cuba
(@PartidoPCC) en X
Polos productivos con resultados y potencialidades, un parque solar fotovoltaico en construcción, comunidades en transformación, centros sociales y constantes intercambios con la población,han caracterizado la jornada de trabajo de @DiazCanelB y @DrRobertoMOjeda en #VillaClara
https://x.com/PartidoPCC/status/1892624434256588952
La Empresa Universal Villa Clara solicita fuerza laboral para cubrir la plaza de:
Mecánico.
Requisitos.
-- Debe ser graduado como tal.
Otros beneficios:
-- Modulo mensual.
Llamar los interesados al Director de la UEB Mayorista al: 59874693.
#villaclara
EMPROY
La EMPROY Villa Clara solicita profesionales para ocupar plaza de:
Especialista en Ciencias Informáticas.
Salario de: 8000 CUP + Pagos por resultados + Utilidades trimestrales.
Requiere Nivel Superior.
Contactar con Directora de Gestión de Capital Humano al:
-- 52850923.
#villaclara
SERMAVCON S.R.L.
Si eres una persona responsable con disponibilidad para trabajar en turnos rotativos (mañana, tarde y noche) y fines de semana; capacidad para trabajar en equipo y seguir instrucciones: la Mipyme SERMAVCON S.R.L. te ofrece una incorporación inmediata ya que estamos en crecimiento con buena remuneración salarial, dándote la oportunidad de contribuir a la salud y bienestar de la comunidad.
Para más información comunícate a cualquiera de los números siguientes:
-- 63448847.
-- 58772929.
-- 59974504.
Contacto:
63448847, 58772929, 59974504
#villaclara
Dr. Roberto Morales Ojeda
(@DrRobertoMOjeda) en X
En esta mañana de viernes participamos, junto a @DiazCanelB y al Comandante de la Revolución @ValdezMenendez , en la inauguración del Parque Solar Fotovoltaico en Remedios que tributará 21.87 MW al SEN, primero de su tipo en #VillaClara que sincronizó el 16 de marzo. #UnidosXCuba
https://x.com/DrRobertoMOjeda/status/1905605006646010111
Dr. Roberto Morales Ojeda
(@DrRobertoMOjeda) en X
La voluntad de no claudicar y el trabajo eficiente han permitido que en Quemado de Güines, #VillaClara, no se detengan las acciones en beneficio del pueblo, pese a las adversidades. Así lo corroboramos en un barrio en transformación y en el policlínico. Seguimos #UnidosXCuba
https://x.com/DrRobertoMOjeda/status/1892603214551290068?t=BFL8YvDU36VWquvPt-BPbg&s=19
Dr. Roberto Morales Ojeda
(@DrRobertoMOjeda) en X
Con la inauguración del Parque Solar Fotovoltaico en Remedios iniciamos por las tierras de Marta Abreu y el Che las visitas a territorios de #VillaClara para recorrer sitios de interés económicos, productivos y sociales. #GenteQueSuma
https://x.com/DrRobertoMOjeda/status/1905619280135139438
Buenas tardes estimados subscriptores
A partir de ahora para diferencias las ofertas laborales y para una mayor organización. Le daremos uso a los # por lo que cada oferta tendrá un # en referencia a la provincia , subiremos las de mayor votación en las encuestas.
#lahabana#guantanamo#isladelajuventud#santiagodecuba#holguin#granma#artemisa#pinardelrio#cienfuegos#villaclara#ciegodeavila