Функция 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
R✨e✨m✨e✨m✨b✨e✨r
Never forget
- Good luck, Have Fun, Don't Die.. 2026 Film putting it right in our faces. Real eyes Realize Real Lies. ..
,•°°•ꨄ•°°•,
✨🌞✨
’•✧•’
( Big Homie )¯\_(ツ)_/¯
All the world is their stage. 🎬
𝐄 𝐍 𝐉 𝐎 𝐘 | 🌟🌟🌿
#Wisdom
It's not what we bought but what we built
It's not what we got but what we shared
It's not our competence but our characters
And it's not our success but our significance
Live a life that matters. Live a life of love.
Unknown
#wisdom
@quietworld🍃
The day the child realizes that all adults are imperfect he becomes an adolescent; the day he forgives them, he becomes an adult; the day he forgives himself he becomes wise.
– Alden N –
#wisdom
@quietworld🍃
We judge people by what they see and hear, but we do not see the qualities that are hidden in their hearts. Avoid suspicion. Let's not say bad things about each other. Let us not gossip or insult.
#wisdom
We can control the words we say, but we can't control what people understand.
We can control what we say to people, but we can't control what other people say to others about us.
That's normal and just a part of life so be it. I'm at peace when I control only what I can control and refuse to take part in things that I cannot control especially those which do not matter at all. ☺️✨🦋
#thoughts#wisdom
@quietworld🍃
To live only for some future goal is shallow. It’s the sides of the mountain that sustain life, not the top.
– Robert M. Prisig
#life#wisdom
@quietworld🍃