Функция 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
🛍️ Акции и специальные предложения в ТРЦ "Выходной"!
👗 MILANA: стильная подборка и скидки до -70%! 👗
MILANA подготовила для вас топовые новинки! Современные модели, трендовый дизайн и безупречное качество — всё, чтобы ваш образ был на высоте. И это ещё не всё! Скидки до -70%! Не упустите возможность обновить гардероб по выгодным ценам!
💄 ТОЧКА КРАСОТЫ: невероятные скидки! 💄
20% скидка на первое посещение!
15% скидка в честь вашего дня рождения!
Не упустите шанс побаловать себя и своих близких!
Приходите в ТРЦ "Выходной" и получите максимум удовольствия от шопинга!
📍 ТРЦ "Выходной"
⏰ Часы работы: 10:00 - 22:00
#ТРЦВыходной#MILANA#Скидки#Красота#Мода#Шопинг
Новая коллекция сумочек в MILANA ✨
Также сейчас у бренда проходит распродажа, где цены на обувь, сумки и аксессуары снижены до 70%! Обнови свой гардероб по выгодным ценам.
#трцвыходной#люберцы#trcvykhodnoy#выходной#новая_коллекция#скидки#Milana#сумки
Друзья!
В честь праздника 23 Февраля магазин MILANA проводит розыгрыш 5 подарочных сертификатов на сумму 1500 рублей каждый!
Где будет проходить розыгрыш?
В телеграм-канале ТРЦ "Выходной"!
Как принять участие?
1. Подпишись на ТРЦ "Выходной" и MILANA.
2. Отметь друга, для которого хочешь сделать подарок.
Когда?
28 февраля в пятницу, в 15:00, мы определим 5 счастливчиков с помощью рандомайзера!
Не упусти шанс порадовать себя и своих близких стильной обувью и сумками от MILANA!
Реклама. ООО "ТЦ КВАРТАЛ", ИНН 5027326760, ERID 2Vtzqw9WDwK
#MILANA#Розыгрыш#23Февраля#Обувь#Сумки#Подарок#Выходной
Участников: 25
Призовых мест: 5
Дата розыгрыша: 15:00, 28.02.2025 MSK (завершён)
Победители розыгрыша:
1. Светлана - 2gfgdm
2. Yana - 2gffph
3. Дарья Гришина - 2gq1e2
4. Retrograde Mercury - 2ipe6o
5. Юлия 🎉 - 2gj6ue
Готовимся к самому нежному и трогательному празднику вместе с MILANA💐!
Как стать участницей?
🎀Подпишись на наши каналы в Телеграм ТРЦ "Выходной" и MILANA
🎀 Отметь свою подругу, для которой хочешь сделать подарок, пригласи участников в розыгрыш и получи дополнительный шанс выиграть
Когда?
08 марта в субботу в 11:00 мы выберем 5 победительниц с помощью рандомайзера! 💖
Не упусти шанс порадовать себя стильной обувью и сумками от MILANA!
Реклама. ООО "ТЦ КВАРТАЛ", ИНН 5027326760, ERID 2Vtzqw5X7Av
#MILANA#8Марта#Выходные#Шопинг#Подарки#Сюрприз
Участников: 44
Призовых мест: 5
Дата розыгрыша: 11:00, 08.03.2025 MSK (завершён)
Победители розыгрыша:
1. Retrograde Mercury - 2jnhr5
2. Татьяна - 2kp819
3. Natiriss🐋 - 2jnash
4. Cos_mos - 2jo57h
5. Татьяна Кириллова - 2k6ter
В MILANA вы найдёте обувь для любого образа – классические ботинки, элегантные туфли или трендовые ботильоны.
Выходной | 1 этаж
#трцвыходной#люберцы#trcvykhodnoy#выходной#новая_коллекция#скидки#Milana#осенняя_коллекция
КЛИЕНТСКИЕ ДНИ В MILANA
📅 29 и 30 марта 2025 года бренд MILANA приглашает вас на Клиентскиие дни в ТРК "Выходной"
✨ Что ждет гостей?
· Шампанское и угощения для создания праздничной атмосферы
· Эксклюзивные подарки за покупки
· Консультации стилистов - поможем создать идеальный образ
· Специальные предложения только для участников мероприятия
👠 Почему стоит посетить?
· Первый взгляд на новую коллекцию весна-лето 2025
· Возможность приобрести любимые модели по специальным условиям
· Профессиональные советы от экспертов моды
📍 MILANA, этаж 1
📌 Даты: 29-30 марта 2025 года
#Milana#КлиентскиеДни#ВеснаЛето2025#Скидка15#ПромокодCD15
💐 Ждем вас за новыми впечатлениями и отличными покупками! 💐
Лето и белая обувь - это ван лав!
Стилист MILANA делится лайфхаками, как сохранить белое белым и не стереть при этом руки до мозолей 😅
#трцвыходной#люберцы#trcvykhodnoy#выходной#белаяобувь#Milana#Милана#лайфхак#lifehack
☀️Ещё два дня лета!
Успей поймать жаркие скидки в ТРК "ПроВыходной"🛍
🔘MILANA: -70% + ДОП -20% на лето
🔘ДОМАРКЕТ: -30% на ВСЁ
🔘ZENDEN: до -50% на новинки
🔘SOKOLOV: цены ПО ПОЛАМ (-50%)
🔘KARI: -50% на 2-й аксессуар
🔘GIPFEL: -25% всё для напитков
Не упусти последний шанс стильно проводить лето😎
#ПроВыходной#Скидки#ЛетниеРаспродажи#Шопинг#ПоследнийДеньЛета#Распродажа#MILANA#ДОМАРКЕТ#ZENDEN#SOKOLOV#KARI#GIPFEL