Функция 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
💥Kit Supervivencia Magnesio Mechero 7 En 1
Un compañero indispensable para tus aventuras al aire libre
✅OFERTA: 7.99€
❌ Antes: 9.99€
💰Ahorras un 20%🔥
Encendedor resistente a la intemperie con mango de madera hecho a mano
👉 Prepárate para la naturaleza
#supervivencia#acampada#senderismo#outdoor#navidad#descuentos#viral
🛰️Oferta publicada en Deporte y Outdoor
💥Brújula Profesional Fluorescente
Encuentra tu camino con estilo
✅OFERTA: 7.59€
❌ Antes: 9.99€
💰Ahorras un 24%🔥
Diseño impermeable y multifuncional ideal para senderismo y supervivencia
👉 Explora la naturaleza con confianza
#brujulaprofesional#brujasdeorientacion#brujulaimpermeable#senderismo#supervivencia#outdoor#navidad
🛰️Oferta publicada en Deporte y Outdoor
💥Paquete de 4 linternas LED para acampar ILEEDear
Ilumina tus aventuras al aire libre con total seguridad
✅OFERTA: 21.48€
❌ Antes: 29.99€
💰Ahorras un 28%🔥
Máxima luminosidad para emergencias y actividades nocturnas
👉 Hazte con ellas y brilla en cada momento
#linternasled#camping#supervivencia#huracanes#apagones#outdoor#ofertas#navidad
🛰️Oferta publicada en Deporte y Outdoor
💥LifeStraw Peak Series - Filtro de Agua Personal
Tu compañero de aventuras en esta Navidad
✅OFERTA: 22.4€
❌ Antes: 29.95€
💰Ahorras un 25%🔥
Agua segura en cualquier situación, ligero y fácil de transportar
👉 Asegura tu hidratación ahora
#lifestraw#filtrodeagua#supervivencia#outdoor#emergencia#montana#navidad#ofertas
🛰️Oferta publicada en Deporte y Outdoor
💥RoverTac Multitool Hacha Hacha
El regalo perfecto para los amantes de la aventura
✅OFERTA: 19.99€
❌ Antes: 24.99€
💰Ahorras un 20%🔥
14 herramientas en 1 para cualquier situación en camping, senderismo o supervive
👉 Equípate para la aventura esta Navidad
#multitool#herramientamultiuso#camping#senderismo#regalosparahombres#navidad#supervivencia#outdoor
🛰️Oferta publicada en Deporte y Outdoor
🈴⊳Manga: GACHIAKUTA
✔️Tipo: Manga
✔️Géneros: #Acción#Drama
#Aventura#Supervivencia
#Fantasía#Apocalíptico
✔️Estado: #Emisión
✔️Capitulos: 144
✔️Fansub: Ukogi Fansub
🔰Sinopsis: En los barrios bajos, habitan los descendientes de criminales que la gente al otro lado del lindero desdeña y discrimina como meros “lugareños”. Ludo es uno de ellos, un niño huérfano que vive con su padre adoptivo Legto y que usa fuerza física más allá de lo ordinario como un arma para ganarse la vida. Un día, sin embargo, lo acusan de un crimen que no cometió y lo arrojan al “abismo” al que incluso los habitantes de los barrios bajos temen.
#Gachiakuta