Функция 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
¿Cuándo usar masilla para reparar la madera?
¿Cuándo es adecuado usar masilla para reparar madera? Descubre las situaciones más comunes y cómo sacar el máximo provecho de este recurso.
➡️ Leer más#carpinteria
¿Cómo decapar un mueble de madera?
Decapado químico, limpieza con arena, decapado térmico, lijado... Esta guía te presenta los 4 mejores métodos para decapar un mueble de madera pintado, antes de personalizarlo, repintarlo o tratarlo...
Leer más#carpinteria#decapado
Cómo instalar una cerradura de sobreponer en puerta de madera
[…] vamos a instalar una cerradura de sobreponer en puerta de madera. Pero, ¿y cuál es la finalidad de colocar una cerradura de sobreponer? Pues añadirle un complemento de seguridad extra o un…
Leer más#carpinteria#puertas
CutList Optimizer, calculadora de cortes
CutList Optimizer es una aplicación o software online que te permite hacer cálculos de los cortes que vas a efectuar, ya sea en chapas de madera, cualquier lámina, tela, etc. Así, podrás saber cuántos recortes puedes aprovechar de determinada superficie, qué área se desperdicia, etc., sin que tengas que improvisar.
Ver recurso#carpinteria#software#corte
La carcoma, el peor enemigo de la madera: qué es, cómo tratarla y formas de prevenirla
Descubre qué es realmente la carcoma y cuál es su mayor peligro. Aprende a identificarla antes de que sea demasiado tarde y cómo saber si está activa.
Evita el principal factor que atrae esta plaga, deshazte de ella y, sobre todo, previene futuros ataques a tus muebles y piezas de madera.
Leer más#carcoma#madera#tratamiento#carpinteria
➡️Xylazel anticarcoma de 5 l.#publi
¿Qué les parece esta #mesa multifuncional?🤔
Este diseño es realmente muy útil para espacios reducidos.🎮
#mueblesinteligentes#melamina#muebles#ahorrodeespacio#carpinteria#aprendamosjuntos
¿Qué les parece este Sillón mecedor? 🥳
¡Este diseño es realmente muy hermoso! 😍
#mueblesinteligentes#melamina#muebles#sillones#carpinteria#aprendamosjuntos#hazlotumismo#aprender
¡Mira estas ideas con madera para el hogar! 😍
Hoy te compartimos #ideas geniales que puedes realizar tu mismo en casa, solo necesitas un poco de madera y creatividad.👨🔧
#mueblesinteligentes#melamina#muebles#madera#carpinteria#aprendamosjuntos#hazlotumismo#aprende
📚 Para los amantes de la lectura, hoy te compartimos ideas de #libreros que puedes hacer tu mismo.👨🔧
#mueblesinteligentes#melamina#muebles#repisas#carpinteria#aprendamosjuntos#hazlotumismo#hogar#pallets#libros