Функция 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
Biznes va tadbirkorlik oliy maktabida ingliz tili va biznes muloqot ko‘nikmalarini rivojlantirishga bag‘ishlangan seminar-trening bo‘lib o‘tdi
🇺🇿 Biznes va tadbirkorlik oliy maktabida “Ingliz tili va biznes muloqot ko‘nikmalarini rivojlantirish” mavzusida seminar-trening o‘tkazildi.
Seminar-treningning mehmoni ingliz tili bo‘yicha xalqaro ekspert, pedagog va tadqiqotchi, “Tashkiliy innovatsiyalar” yo‘nalishi bo‘yicha pedagogika fanlari doktori Juzeppe Kiaramonte bo‘ldi.
Tadbir interfaol formatda tashkil etilib, unda ishtirokchilarga ingliz tilida, ayniqsa, og‘zaki nutq ko‘nikmalarini rivojlantirishga qaratilgan turli amaliy faoliyat turlari taqdim etildi. Shuningdek, ushbu ko‘nikmalarni biznes muloqot jarayonlarida samarali qo‘llash bo‘yicha tavsiyalar berildi.
Mashg‘ulot davomida tinglovchilar faoliyat yuritayotgan sohalaridagi real keyslar asosida muhokamalarda ishtirok etib, amaliy topshiriqlar orqali kommunikativ kompetensiyalarini mustahkamlash imkoniga ega bo‘ldilar.
Tadbir yakunida ishtirokchilar bunday seminar-treninglarni kelgusida muntazam o‘tkazib borish muhimligini ta’kidladilar.
🇷🇺RU
🇬🇧ENG
#GSBE#GraduateSchool#Masterclass#Englishlanguage
🔝Web-site |🔝Facebook | 🔝Instagram | 🔝Youtube
Наше Образовательное учреждение с гордостью объявляет о проведении международной олимпиады по английскому языку "Hippo"! Это уникальная возможность для всех учащихся продемонстрировать свои знания и навыки в английском языке. 📚✨
Олимпиада "Hippo" - это не только соревнование, но и отличный шанс для обмена знаниями, встречи с новыми людьми и получения незабываемого опыта. Мы приглашаем учеников всех возрастных категорий принять участие и показать свои лучшие языковые способности. 🌍🏆
🔹 Регистрация открыта до 2 декабря.
Присоединяйтесь к нам в этом увлекательном путешествии в мир английского языка! 🎉
#HippoOlympiad#EnglishLanguage#InternationalCompetition
If you have any questions, do not hesitate to contact us☎️
+998742261078 | +998742281121 | +998958505111 | +998742276163 | +998742252536 | +998952017878
or write on Telegram @admofadc
🎉Happy Birthday to Samora “Sam” Poswa, a citizen of South Africa🇿🇦 who lives and works in Yekaterinburg!
🎓Sam Poswa teaches English at the EnglishFit language school and has already introduced hundreds of Yekaterinburg residents to the culture and traditions of South Africa🌍
📚 Learn more about Sam’s activities:
— https://t.me/sarconsulurals/1575
— https://t.me/sarconsulurals/1489
— https://t.me/sarconsulurals/1443
🔗 His VK page:
https://vk.com/id524313855
🎂 Wishing Sam good health, inspiration, professional success, and many exciting new projects ahead!
#SouthAfrica#SamPoswa#Yekaterinburg#EnglishLanguage#CulturalExchange#Education
Do you know someone who always thinks that everyone else has a better life than them?! 🙄😅 Scroll through the images to find out how to use ‘the grass is always greener on the other side’ 🌱, and don’t forget to answer the questions on the last slide!
EXTRA: Could walking 7,000 steps a day could improve your mental health? 🚶 Click the link in our bio to find out and learn some useful vocabulary in the process! 📰💚
Image: Getty
#vocabulary#learnenglish#englishlanguage#expression#idiom#proverb#englishclass#speakenglish
You know when somebody just WON’T change their ways? 😠 We’ve got an English expression for that! ✅
Scroll through the images to find out how to use ‘You can’t teach an old dog new tricks.’ ❌🐶
Can you use it in a sentence – and do you have a similar expression in your language? 👇👇👇
MORE: If you'd like to learn some more animal idioms, like 'rabbit on 🐰' or 'as sick as a parrot 🦜', click the link in our bio!
Image: Getty
#trick#proverb#learnenglish#vocabulary#learnenglish#englishlanguage#expression#idiom#englishclass#speakenglish
😱 Oh no!!! There’s a mistake in this sentence. Do YOU 🫵 know what’s wrong? We’ll tell you the answer later! (Image: Getty)
MORE: Click the link in our bio for a quick video tutorial about this topic ☝️☝️☝️
#learnenglish#quiz#englishlanguage#grammar#vocabulary#spotthemistake#spottheerror#mistake#error#learnenglish