Функция 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
💥LOréal Paris Bright Reveal Crema Anti-Manchas SPF 50
Ilumina tu piel esta Navidad
✅OFERTA: 14.98€
❌ Antes: 23.72€
💰Ahorras un 37%🔥
Despídete de las manchas y protege tu piel del sol
👉 Descubre tu luminosidad ahora
#pielradiante#antimanchas#cuidadodelapiel#navidad#ofertas#belleza#viral
🛰️Oferta publicada en Moda y Belleza
💥Protégete del sol con La Roche Anthelios Shaka
Tu aliado para cuidar tu piel en esta temporada festiva
✅OFERTA: 14.01€
❌ Antes: 30.0€
💰Ahorras un 53%🔥
Fórmula ultra ligera con alta protección solar, ideal para pieles sensibles
👉 Hazte con él y disfruta de la Navidad al sol
#navidad#proteccionsolar#piel#belleza#ofertas#cuidadodelapiel#verano#rocheanthelios
🛰️Oferta publicada en Moda y Belleza
💥Neutrogena Hydro Boost Limpiador Gel de Agua
Dale a tu piel el regalo de la hidratación
✅OFERTA: 8.2€
❌ Antes: 12.9€
💰Ahorras un 36%🔥
Elimina maquillaje y suciedad sin resecar, gracias al ácido hialurónico
👉 Cuida tu piel esta Navidad
#limpiezafacial#hidratacionfacial#acidohialuronico#cuidadodelapiel#belleza#pielhidratada#navidad#ofertas
🛰️Oferta publicada en Moda y Belleza
💥Braun FaceSpa 810 - Sistema facial todo en uno
Limpieza profunda y depilación suave para tu piel
✅OFERTA: 39.89€
❌ Antes: 69.99€
💰Ahorras un 43%🔥
Dile adiós al vello no deseado y consigue una piel radiante
👉 Renueva tu rutina de cuidado facial ahora
#limpiezafacial#depilacionfacial#belleza#ofertas#rebajas#cuidadodelapiel#rostrolimpio#pielradiante
🛰️Oferta publicada en Moda y Belleza
💥Serum Cantabria Labs Endocare Age Barrier
Regala a tu piel el cuidado que se merece esta Navidad
✅OFERTA: 33.65€
❌ Antes: 54.64€
💰Ahorras un 38%🔥
Repara la función barrera de la piel, hidratación antiedad duradera
👉 Consigue una piel radiante estas fiestas
#endocare#antiedad#hidratacion#belleza#cuidadodelapiel#serum#navidad#ofertas
🛰️Oferta publicada en Moda y Belleza
💥Depiladora Láser 21J Indolora
Di adiós al vello de forma cómoda y efectiva
✅OFERTA: 89.99€
❌ Antes: 159.99€
💰Ahorras un 44%🔥
Tecnología de refrigeración para una depilación suave y segura en casa
👉 Elimina el vello con facilidad
#rebajas#depilacionlaser#depiladoralaser#cuidadodelapiel#tecnologialaser#rebajasdeinvierno#ofertas#depilacionfacial
🛰️Oferta publicada en Hogar
💥Kit Completo de Depilación Epilwax con Cera de Argán
Consigue una piel suave y libre de vello en casa
✅OFERTA: 21.43€
❌ Antes: 26.95€
💰Ahorras un 20%🔥
Incluye todo lo necesario para una depilación profesional en la comodidad de tu
👉 Hazte con tu kit ahora y presume de piel suave este invierno
#depilacion#ceraargan#rebajas#ofertas#belleza#cuidadopersonal#depilacionprofesional#cuidadodelapiel
🛰️Oferta publicada en Moda y Belleza
💥Revolution SKin, Be Bright Starter Kit
Ilumina tu piel esta Navidad
✅OFERTA: 11.19€
❌ Antes: 15.99€
💰Ahorras un 30%🔥
Consigue una piel radiante con productos veganos y libres de crueldad
👉 Descubre la luminosidad
#skincare#vegano#cuidadodelapiel#iluminador#revolutionskin#navidad#ofertas#belleza
🛰️Oferta publicada en Moda y Belleza
💥PIZ BUIN Crema Facial SPF 50
Protege tu piel con estilo esta Navidad
✅OFERTA: 7.89€
❌ Antes: 13.9€
💰Ahorras un 43%🔥
Hidratación profunda y protección duradera contra los rayos solares
👉 Luce una piel radiante ahora
#navidad#proteccionsolar#pielhidratada#filtrosuv#cremafacial#cuidadodelapiel#verano#belleza
🛰️Oferta publicada en Moda y Belleza
💥Sérum Hidratante Rellenador Garnier con Aloe y Ácido Hialurónico
Ilumina tu piel y luce radiante en estas fiestas
✅OFERTA: 9.94€
❌ Antes: 15.94€
💰Ahorras un 38%🔥
Hidratación profunda y efecto relleno para una piel suave y revitalizada
👉 Descubre el secreto de una piel perfecta
#navidad#hidratacionprofunda#cuidadodelapiel#serumfacial#aloehialuronico#bellezanatural#pielhidratada#navidad2021
🛰️Oferta publicada en Moda y Belleza
💥Serum Anti-arrugas LOréal Paris Revitalift
Ilumina tu piel esta Navidad
✅OFERTA: 7.33€
❌ Antes: 11.6€
💰Ahorras un 37%🔥
Reduce arrugas, firmeza y nutrición para una piel radiante
👉 Descubre tu nueva rutina de belleza
#antiarrugas#pielmasfirme#hidratacionintensa#cuidadodelapiel#revitalift#lorealparis#belleza#navidad
🛰️Oferta publicada en Moda y Belleza