Функция sub в regex может принимать функцию в качестве аргумента repl.
📄 Из документации:
If repl is a function, it is called for every non-overlapping occurrence of pattern. The function takes a single match object argument, and returns the replacement string.
То есть для каждого совпадения будет вызвана функция для вычисления замены вместо замены на одну и ту же строку для всех совпадений.
Иными словами, для замены разных совпадений на разные строки не потребуется запускать re.sub() много раз для каждой строки замены. Достаточно определить функцию, которая вернёт строку для каждого из совпадений.
Описание слишком запутанное🤔, давайте лучше рассмотрим на простом примере:
Создаем карту замены. То есть какие строки на какие требуется менять.
remap = {
'раз': '1',
'два': '2',
'три': '3',
'четыре': '4',
'пять': '5',
}
Пишем функцию поиска строки для замены. Единственным аргументом будет объект re.Match.
Используя данные этого объекта мы вычисляем замену on-the-fly!
def get_str(match: re.Match):
word = match.group(1)
return remap.get(word.lower()) or word
Пример текста.
text = '''Раз Два Три Четыре Пять
Вместе будем мы считать
Пять Четыре Три Два Раз
Мы считать научим вас
'''
Теперь запускаем re.sub и вместо строки замены (repl) подаём имя функции.
(Данный паттерн ищет отдельные слова в тексте)
>>> print(re.sub(r'(\w+)', get_str, text))
1 2 3 4 5
Вместе будем мы считать
5 4 3 2 1
Мы считать научим вас
Думаю, достаточно наглядно 🤓
#libs#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