Функция 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
🎵
🎵
🎵
🎵
🎵
🎵
🎵
🎵
🎵
Куда пойти?
🎵 На самое громкое музыкальное событие осени — PEPSI MUSIC FEST 2025!
Три дня - три шоу, три легендарных артиста и тысячи эмоций:
🎤19 сентября, 18:00 — Big Baby Tape. Рэп нового поколения, чьи треки взрывают чарты.
🎤20 сентября, 18:00 — Ирина Кайратовна. Хиты, драйв и юмор вечер превратится в вечеринку года.
🎤21 сентября, 18:00 — Akon впервые в Узбекистане! Легенда мировой сцены исполнит свои знаменитые хиты.
🎟 Вход свободный
📅 19–21 сентября, 18:00
📍Central Asian Expo Uzbekistan
📹 Подробности в Instagram: @pepsi_uzbekistan
Не пропусти — PEPSI MUSIC FEST 2025 ждёт тебя!
Поделитесь с другом:
👉@KudaPoytiuz
#PepsiMusicFest#Tashkent2025
🎵
🎵
🎵
🎵
🎵
🎵
🎵
🎵
🎵
🔥PEPSI MUSIC FEST 2025— старт с мировым размахом! 🔥
📍19–21 сентября, Ташкент,
📍Central Asian Expo Uzbekistan
📍Вход свободный
💥 Три дня — три легендарных шоу, тысячи эмоций и энергия, которая перевернёт город!
✨19 сентября — взрывная энергия и рэп нового поколения!
На сцене Big Baby Tape — кумир миллионов, чьи треки разрывают чарты и собирают стадионы.
🎤20 сентября — драйв, юмор и харизма!
Хэдлайнеры вечера — группа Ирина Кайратовна — голос нового поколения.
🌍21 сентября — грандиозный финал!
Впервые в Узбекистане — легенда мировой сцены Akon!
Его хиты покорили весь мир — теперь они прозвучат вживую на Pepsi Music Fest!
🎟 Не пропусти — Pepsi Music Fest 2025.
PEPSI — ЖАЖДА БОЛЬШЕГО!
#PepsiMusicFest#Tashkent2025
Prezidentimizning "Markaziy Osiyo yangi davr ostonasida" mavzusidagi maqolasi yuzasidan munosabat
Intervyu: Jahongir Saidov
Tashqi ishlar vazirligi tashqi siyosiy tadqiqotlar va xalqaro tashabbuslar markazi ilmiy xodimi
#Toshkent shahri
#Uzbekistan#Tashkent2025
😎Telegram😎Instagram▶️Youtube
📢Toshkentda WTT Youth Contender Tashkent 2025 davom etmoqda!
🏓 Bugun turnirning 2-kuni “Humo Arena”da bo‘lib o‘tmoqda. U11–U19 toifasidagi yosh tennischilar bahs olib bormoqda.
📅 Turnir 31-maygacha davom etadi.
📺 Jonli efir:
➡️ T1 WTT Youth Contender
➡️ T2 WTT Youth Contender
✅Kirish bepul!
#WTT#Tashkent2025#StolTennisi#HumoArena
📢 В Ташкенте стартовал WTT Youth Contender Tashkent 2025!
🏟 С 28 по 31 мая в “Humo Arena” проходит международный турнир по настольному теннису среди юниоров (U11–U19).
🎯 Цель — дать молодым спортсменам международный опыт и шанс набрать рейтинговые очки WTT.
📺 Прямая трансляция:
➡️ T1 WTT Youth Contender Tashkent 2025
➡️ T2 WTT Youth Contender Tashkent 2025
✅Вход свободный!
#WTT#Tashkent2025#TableTennis#StolTennisi
Cadet Asian Cup 2025 — Tashkent, Uzbekistan 🇺🇿
✅ Day 1 Results — Cadet Women’s Sabre
1️⃣ RUZIEVA Salima 🇺🇿
2️⃣ KHUSANBOEVA Bibiaisha 🇺🇿
3️⃣ ISKHAKOVA Nailya 🇰🇿
3️⃣ MAUINBERGENOVA Perizat 🇺🇿
👏 Congratulations to the winners and all participants!
👉 Stay tuned and follow us for daily updates!
#CadetAsianCup#FencingAsia#FCA#FIE#Tashkent2025#Sabre#Fencing#AsiaFencing
Cadet Asian Cup 2025 — Tashkent, Uzbekistan 🇺🇿
✅ Day 1 Results — Cadet Men’s Foil
1️⃣ ALBUSAIDI Ali 🇴🇲
2️⃣ CHEONG Pak Kio 🇲🇴
3️⃣ YETSEU Mansur 🇰🇿
3️⃣ TOKANOV Yevgeniy 🇰🇿
👏 Congratulations to the winners and all participants!
👉 Stay tuned and follow us for daily updates!
#CadetAsianCup#FencingAsia#FCA#FIE#Tashkent2025#Foil#Fencing#AsiaFencing