Функция 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
#yuksalish
🇺🇿Axborot va ommaviy kommunikasiyalar agentligi BMTning O‘zbekistondagi vakolatxonalari bilan hamkorlikda «Orolga hayot bag‘ishla» mavzusida xalqaro onlayn-konferensiyasida Yoshlar ishlari agentligi direktori o'rinbosari ishtiroki uchun tayyorlangan prezentatsiya dizayni
@ik_design👈
🌱Toshkentda ko'chat ekish aksiyasi o'tkaziladi
"Bir million daraxt"loyihasi doirasida “Summit Motors Central Asia” XK MCHJ hamkorligida ekologiyani yaxshilash, hududlarni ko‘kalamzorlashtirish va ijtimoiy mas’uliyatni oshirish maqsadida Toshkent shahrida ko‘chat ekish tadbiri o‘tkaziladi.
Barchani ushbu ezgu tashabbusda faol ishtirok etishga chorlaymiz!
Joyi: Millatlararo munosabatlar qo'mitasi hududi
Vaqti: 28-mart 11:00
#Yuksalish#BirMillionDaraxt
📝 Telegram sahifamizga obuna bo'ling - @uzbyuksalish
#yuksalish#maqsad#natija
⚡Bugun shogirdim Boymurod Yunusov bilan yangi dizayn o'rgandik, o'ziga yarasha mehnati bor, lekin tushungan odam zavqlanib ishlaydi.
@ik_design👈👉@isakovxusniddin
Memorandum Signed Between Green University and “Yuksalish” Movement
Within the framework of the Central Asian Forum of Ecologists and Eco-Activists, a Memorandum of Understanding was signed between Green University and “Yuksalish” Movement.
💬The document outlines cooperation in organizing environmental forums, conducting sociological and environmental surveys, supporting innovative startups, and engaging students in volunteer activities.
💬The parties also agreed to expand collaboration through joint research, as well as seminars and conferences.
#GreenUniversity#Yuksalish#MemorandumOfUnderstanding#EcoForum#EnvironmentalProtection#Cooperation
👉ReadMore ________________
Green University va “Yuksalish” Harakati o‘rtasida memorandum imzolandi
Markaziy Osiyo ekologlari va eko-faollari forumi doirasida Green бUniversity va “Yuksalish” Harakati o‘rtasida O‘zaro anglashuv memorandumi imzolandi.
💬Mazkur hujjat ekologlar forumlarini tashkil etish, sotsiologik va ekologik so‘rovlar o‘tkazish, innovatsion startaplarni qo‘llab-quvvatlash hamda talabalarni volontyorlik faoliyatiga jalb etishni nazarda tutadi.
💬Shuningdek, tomonlar qo‘shma ilmiy tadqiqotlar, seminarlar va konferensiyalar orqali hamkorlikni kengaytirishga kelishib oldi.
#GreenUniversity#Yuksalish#Memorandum#EcoForum#AtrofMuhit#Hamkorlik
👉Batafsil
✉️[email protected]
☎️ +998 55 512 00 77
📍Location
🌐Website | 📱Telegram | 📱Instagram | 📱LinkedIn | 🟥YouTube
Bilasizmi?
UNICEFda faoliyat yuritganman va hozir shu haqida sizga qisqa aytib beraman.
Nogironligi bo‘lgan qizlar, o‘g‘il bolalar va yoshlarni mahalliy rejalashtirishga yanada mazmunli jalb qilish mumkin – #UNICEFdagi avvalgi lavozimimda men beshta tajriba kuzatuvidagi shaharlarni qisqa vaqt ichida erishgan ulkan yutuqlari bilan chin qalbimdan tabriklayman! 👏
#YUNISEF va #Yuksalish umumxalq harakatining #Yoshlar va_bolaga_doʻst_mahalliy_boshqaruv tashabbusining yakuniy tadbirida tajriba shaharlari - #Boʻston, #Qoʻqon, #Termiz, #Yangibozor va #Zarafshon – yangi IT markazlari, bolalar uchun yoʻl xavfsizligini yaxshilash kabi ajoyib natijalarni taqdim etdi.
😎Instagram.😎Hayotalks
😎Telegram📱Khayotullo
🇺🇿🤝🇮🇹Президент Узбекистана на саммите «Центральная Азия – Италия»: стратегические акценты
Президент Шавкат Мирзиёев принял участие в первом регионально-европейском саммите в Астане и обозначил приоритеты узбекской внешнеэкономической и гуманитарной повестки:
🔹 Поддержка дипломатических усилий по мирному урегулированию конфликта на Украине
🔹 Совпадение позиций по Афганистану и ближневосточным вопросам
🔹 Инициатива по запуску механизмов обмена информацией между спецслужбами
🔹 Создание бизнес-платформы «ЦА – Италия» и привлечение итальянских институтов SACE и SIMEST
🔹 Развитие промышленной кооперации, трансфера технологий и инновационных производств
🔹 Углубление сотрудничества в области «зелёной» энергетики и водородных решений
🔹 Учреждение научно-образовательного консорциума и проведение форума креативной экономики в Хиве
🌱Как независимый эксперт международного движения Yuksalish, отмечаю в качестве примера эффективного партнёрства — проект по выращиванию и экспорту шафрана.
Это один из немногих кейсов, где локальная агросфера успешно интегрирована в международную производственно-экспортную цепочку с участием итальянских партнёров.
📌 Саммит в Астане продемонстрировал: между Центральной Азией и Италией формируется устойчивая архитектура партнёрства — от безопасности и инвестиций до науки, экологии и креативной экономики.
#CAItalySummit#Mirziyoyev#Uzbekistan#Italy#Diplomacy#Ororosso#BMBZafaron#Saffron#Yuksalish#Geoeconomics#ЯнгиЎзбекистон
@bahodir_schastlivchik