Функция 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
😎
😎
😎
😎
😎
😎
😎
#aksiya
Qaynoq aksiya — naqd 9 xil mavsumiy mahsulotlarga🔥
Eng kerakli va ayni mavsumga mos mahsulotlar — endi yanada qulay narxlarda!
📅 8-9-10-aprel kunlari “Mittivoy”ning barcha filiallarda boʻlib oʻtadi
Faqat 3kun! Imkoniyatni qoʻldan boy bermang 🔥
📌Kitoblarga -50% chegirma kerakmi?
📍Manzilimiz📍Lokatsiya
🕘 9:00 dan 23:00 gacha
☎️ +998905116466
💵1% KESHBEK
📱Telegram📱Instagram📱YouTube📑Ishga kirish
#aksiya
✅Navbatdagi targ‘ibot aksiyasi Qoraqalpog‘iston Respublikasida o'tkazildi
Nukus shahridagi savdo majmualaridan birida bo‘lib o‘tgan “Mening solig‘im – yurtim iqboli” mavzusidagi aksiya nukusliklar xotirasida uzoq saqlanib qoladigan bo‘ldi.
Mazkur aksiya fuqarolar oʻrtasida soliq madaniyatini yuksaltirish va asosiysi, yashirin iqtisodiyotning oldini olishga qaratilganligi bilan ahamiyatlidir.
Savdo majmuasidagi gavjum muhit — har bir xarid, har bir chek, har bir so‘m kelajakka qo‘yilgan kichik, ammo ma’noli hissa ekani anglandi.
Ayrimlar uchun arzimasdek koʻringan xarid chekini talab qilishning ahamiyati, yashirin iqtisodiyot, xususan, savdo tushumlarini yashirish, soliqdan qochish va norasmiy bandlikning salbiy oqibatlari hamda xarid cheki uchun joriy qilingan keshbek, soliq imtiyozlari va yengilliklar, soliqlarning turlari va muddatlari xususidagi savollarga toʻgʻri javob bergan fuqarolarga Qoraqalpog‘iston Respublikasi soliq boshqarmasining maxsus sovgʻalari topshirildi.
Тelegram|Facebook|Youtube|Instagram|X|Threads
😎
😎
😎
😎
😎
😎
😎
#aksiya
“Mittivoy” 6 yoshda 🎊 Shu munosabat bilan oʻyinchoqlar boʻlimidan mega aksiya 🎈
📅 25-26-27-aprel kunlari “Mittivoy”ning barcha filiallarda boʻlib oʻtadi
Faqat 3 kun! Imkoniyatni qoʻldan boy bermang 🔥
📍Manzilimiz📍Lokatsiya
🕘 9:00 dan 23:00 gacha
☎️ +998905116466
💵1% KESHBEK
📱Telegram📱Instagram📱YouTube📑Ishga kirish
😎
😎
😎
😎
😎
😎
😎
#aksiya
“Mittivoy”ning 6 yilligi munosabati bilan super aksiya 😍
Eng kerakli va ayni mavsumga mos mahsulotlar — endi yanada qulay narxlarda!
📅 25-26-27-aprel kunlari “Mittivoy”ning barcha filiallarda boʻlib oʻtadi
Faqat 3 kun! Imkoniyatni qoʻldan boy bermang 🔥
📍Manzilimiz📍Lokatsiya
🕘 9:00 dan 23:00 gacha
☎️ +998905116466
💵1% KESHBEK
📱Telegram📱Instagram📱YouTube📑Ishga kirish
😎😎😎😎😎😎😎
#aksiya
1+1 aksiyaning 3-kuni! 🔥
Belgilangan vitrinadagi bahorgi ustki kiyimlar bilan tanishamiz ✅
Shoshiling! Bunday imkoniyatni qoʻldan boy bermang ‼️
📌1+1 aksiya bahorgi kiyimlarga
📍Manzilimiz📍Lokatsiya
🕘 9:00 dan 23:00 gacha
☎️ +998905116466
💵1% KESHBEK
📱Telegram📱Instagram📱YouTube📑Ishga kirish
😎😎😎😎😎😎😎
#aksiya
1+1 aksiyaning 3-kuni! 🔥
Chaqaloqlaringiz uchun belgilangan vitrinadagi bahorgi kiyimlar bilan tanishamiz ✅
Shoshiling! Bunday imkoniyatni qoʻldan boy bermang ‼️
📌1+1 aksiya bahorgi kiyimlarga
📌1+1 aksiya bahorgi kiyimlarga
📍Manzilimiz📍Lokatsiya
🕘 9:00 dan 23:00 gacha
☎️ +998905116466
💵1% KESHBEK
📱Telegram📱Instagram📱YouTube📑Ishga kirish
😎😎😎😎😎😎😎
#aksiya
1+1 aksiyaning oxirgi 4-kuni! 🔥
Belgilangan vitrinadagi bahorgi kiyimlar bilan tanishamiz ✅
Shoshiling! Bunday imkoniyatni qoʻldan boy bermang ‼️
📌1+1 aksiya bahorgi kiyimlarga
📍Manzilimiz📍Lokatsiya
🕘 9:00 dan 23:00 gacha
☎️ +998905116466
💵1% KESHBEK
📱Telegram📱Instagram📱YouTube📑Ishga kirish
😎
😎
😎
😎
😎
😎
😎
#aksiya
1+1 aksiyaning oxirgi 4-kuni! 🔥
Belgilangan vitrinadagi bahorgi oyoq kiyimlar bilan tanishamiz ✅
Shoshiling! Bunday imkoniyatni qoʻldan boy bermang ‼️
📌1+1 aksiya bahorgi kiyimlarga
📍Manzilimiz📍Lokatsiya
🕘 9:00 dan 23:00 gacha
☎️ +998905116466
💵1% KESHBEK
📱Telegram📱Instagram📱YouTube📑Ishga kirish
😎
😎
😎
😎
😎
😎
😎
#aksiya
Bitta oling, ikkinchisi bepul! 🔥
Belgilangan vitrinadagi bahorgi kiyim va oyoq kiyimlar uchun 1+1 aksiya ✅
Shoshiling, aksiyaning oxirgi 4-kunidan xarid qilishga ulguring 🔥
📌1+1 aksiya bahorgi kiyimlarga
📍Manzilimiz📍Lokatsiya
🕘 9:00 dan 23:00 gacha
☎️ +998905116466
💵1% KESHBEK
📱Telegram📱Instagram📱YouTube📑Ishga kirish