Функция 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
Всем самый летний привет!☀️Девочки,продолжая нашу рубрику вопрос-ответ(вопрос про уходовые средства ) Делюсь с Вами своими Бьюти открытиями . Топ 3 моих главных фаворита от бренда Maskoholic 💚@maskoholic_com
-Патчи(они всегда есть в моей сумке)и я ими пользуюсь абсолютно везде(лучший экспресс-уход перед съемкой,спектаклем,выходом в свет)
-энзимная пудра для глубокого очищения лица и шеи(супер штука,глубоко очищает поры даже от самого плотного тонального крема) , а за день на съёмках его накапливается тонны😅
-увлажняющая маска (вЭликолепное завершение для трапезы кожи,измождённой и изголодавшейся по гидратации🥰)
Девочки ,очень рекомендую это тройное Комбо для лица от бренда Мaskoholic . Ваша кожа будет счастлива!С этими средствами Вы всегда будете во всеоружии😎💋Ну и конечно любая Женщина со мной согласится,что лицо,как и душа,как и фигура тоже нуждается в питании и поддержке!Запомните!Не бывает некрасивых Женщин,бывают ленивые!Заботьтесь о себе и своей красоте!Ведь красота-это свобода!
#skincare#greengo#beautybar#pure
Total privacy with @huvafenfushi_maldives✨🙏🏻☀️🧘🏼♀️ Здесь всегда тепло,здесь всегда сезон: солнце, дождь, ветер, песок, птицы, еда, вода, персонал, каждый уголок острова наполнен покоем, светом, любовью, вниманием, заботой о том, чтобы Вы наполнились силами природы и ничто Вас не беспокоило, захватывающее ощущение того, что Ты один на острове, растворяешься в бирюзовых горизонтах океана, утопающих в бесконечных горизонтах неба.. Спасибо @huvafenfushi_maldives за этот волшебный отдых, приём и гостеприимство.. C’est un vrai miracle💙✨🙏🏻
#huvafenfushi#maldives#vacation#miracle#honeymoon#withmylilsis#thankyou #🙏🏻#moodoftheday#paradise#heavenonearth#hooponopono #🧘🏼♀️#balance#privacy#harmony#traveltheworld#greengo#purenature
One more day with @velassarumaldives ..💙
One more day with Mother Nature .. 🧜🏻♀️
Total balance with my Inner and Outer Amazon .. @rodasoleil✨
..Такими зелеными бывают деревья в ярких живописных снах. Таким синим был бы океан, если бы он мог достичь совершенства.. здесь сны видятся также ясно, как будущее в блюде мексиканских женщин, предсказывающих будущее у ночного костра… всем baajjaa veri hendhuneh ☀️
#velassarumaldives#velassaru
#maldives#vacation#miracle#honeymoon#withmylilsis#thankyou #🙏🏻#moodoftheday#paradise#hooponopono #🧘🏼♀️#balance#privacy#harmony#traveltheworld#greengo#purenature#amazon#myroots#mira#petitefemme