Функция 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
⏸A powerful video by our students raising awareness about the dangers of air pollution.
#AirQuality#Sustainability#EcoEducation#GreenUniversity#ActNow
✉️[email protected]
☎️ +998 55 512 00 77
📍Location
🌐Website | 📱Telegram | 📱Instagram | 📱LinkedIn | 🟥YouTube
🌿Scientific and Practical Seminar within the “Yashil bog‘lar” Project
🔴A scientific and practical seminar on the care, treatment, and protection of green spaces was held at Astronomy Park in Tashkent. The event was organized for school students and youth.
⏺ The seminar was hosted by the National Committee for Ecology and Climate Change in collaboration with the “Zamin” International Public Foundation.
⏺ Experts conducted theoretical and practical sessions on tree care, including mulching, sanitary and formative pruning, as well as biological methods for plant protection.
⏺ Proposals were made for planting additional shrubs and tree saplings to further enhance the greenery of the park.
⏺ Active participation included representatives from Green University, the Eco-Schools Uzbekistan project, and the Tashkent City Young Ecologists Movement.
At the conclusion of the seminar, young participants and specialists emphasized the importance of sharing experiences, learning modern approaches, and strengthening cooperation to further develop green spaces in Tashkent.
#YashilBoglar#GreenUzbekistan#EcoEducation#YouthForNature ___________________________
🌿“Yashil bog‘lar” loyihasi doirasida ilmiy-amaliy seminar
🔴 Toshkentdagi Astronomiya bog‘ida yashil hududlarni parvarishlash, davolash va himoya qilishga bag‘ishlangan ilmiy-amaliy seminar bo‘lib o‘tdi. Tadbir asosan maktab o‘quvchilari va yoshlar uchun tashkil etildi.
⏺ Tadbir Ekologiya va iqlim o‘zgarishi Milliy Qo‘mitasi va “Zamin” jamoat fondi tashabbusi bilan o‘tkazildi.
⏺ Mutaxassislar daraxtlarni mulchalash, sanitariya va shakllantiruvchi kesish, shuningdek, biologik himoya usullari bo‘yicha nazariy va amaliy mashg‘ulotlar o‘tkazdilar.
⏺ Hududni yanada ko‘kalamzorlashtirish uchun buta va ko‘chatlarni ekish bo‘yicha takliflar bildirildi.
⏺ Seminarda Green University, Eco-schools Uzbekistan loyihasi, Toshkent shahar Yosh ekologlar harakati va boshqa tashkilotlar faol ishtirok etdilar.
Tadbir yakunida yoshlar va mutaxassislar tajriba almashish, zamonaviy yondashuvlarni o‘rganish va Toshkentdagi yashil hududlarni rivojlantirish bo‘yicha hamkorlikni mustahkamlash zarurligini ta’kidlashdi.
#YashilBoglar#GreenUzbekistan#EcoEducation#YouthForNature
✉️[email protected]
☎️ +998 55 512 00 77
📍Location
🌐Website | 📱Telegram | 📱Instagram | 📱LinkedIn | 🟥YouTube
🌱🐾 Colombia passes historic “Law of Empathy”!
Schools across the country will now teach children compassion for animals and respect for nature. The law requires all educational institutions — from kindergartens to high schools — to integrate ethical treatment of animals and biodiversity protection into school projects.
Key points:
High school students can complete community service in animal shelters and wildlife rehabilitation centers.
Programs recognize animals as sentient beings — capable of feeling pain and emotions.
A national network of teachers will share experiences and best practices in fostering respect for life.
Senator Andrea Padilla, the law’s initiator, said:
"Education saves lives and changes the world. We want new generations to grow up as fair and compassionate citizens toward all forms of life."
Colombia is now one of the first Latin American countries to make humane education mandatory — a potential model for other countries worldwide! 🌎💚
#Colombia#LawOfEmpathy#AnimalProtection#EcoEducation#Bioethics☘️Read the latest environmental news on the @ekologuz page. Follow us and send your suggestions and wishes via @eklguz_bot
Instagram | Facebook | Twitter | Sayt | Youtube