Функция 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
‼️ВНИМАНИЕ КОНКУРС‼️
Дорогие друзья, с 10 февраля начинается прием заявок на МЕЖДУНАРОДНЫЙ КОНКУРС «АРТЕК – СТОЛИЦА ДЕТСТВА» 🌍
на участие в образовательной программе 8 смены 2024 года в ФГБОУ «МДЦ «Артек» 🔥
Целью проведения Международного конкурса «АРТЕК – СТОЛИЦА ДЕТСТВА» является выявление и поддержка наиболее достойных иностранных школьников и юных соотечественников, проживающих за рубежом, мотивированных на изучение и популяризацию русского языка и российской культуры, историю Артека в мире и успешно выполнившие конкурсные задания ⭐️🏆
К участию в Конкурсе приглашаются организованные группы детей (делегации!) из стран ближнего и дальнего зарубежья 👬👫🌍 Количественный состав интернациональной делегации от 5 до 10 человек, для зарубежных профессиональных творческих коллективов количество участников может быть увеличено до 20 человек! 💃🕺
‼️ВНИМАНИЕ: для участия в конкурсе приглашаются дети – граждане зарубежных стран, имеющие отличное от РФ гражданство ‼️
В Артеке представители зарубежных делегаций продемонстрируют свой национальный колорит, традиции, обычаи в формате подлинного диалога культур, когда все его участники активны, самобытны и равноправны 🧕👳♀️👳♂️👩⚕️🙋♂️🙋♀️
Для участия в Программе необходимо пройти конкурсный отбор ПОЛОЖЕНИЕ О КОНКУРСНОМ ОТБОРЕ прилагается 👇
#содружество#фондсодружество#druzhbafond#артек#artek
Дорогие друзья, 🥰 в 2024 году в конкурсе «Артек – столица детства» и «Наш дом - Земля» приняли участие более 70 групп, делегаций и коллективов, в состав которых входят дети из более 60 стран мира
👏ПОЗДРАВЛЯЕМ победителей конкурсного отбора
на участие в тематической общеразвивающей программе
«МЕЖДУНАРОДНЫЙ ФЕСТИВАЛЬ «НАШ ДОМ - ЗЕМЛЯ»», и победителей Международного конкурса «Артек – столица детства», награждённых бесплатной путёвкой в «МДЦ» Артек» на 8-ю Международную смену 2024 года
‼️ТОРЖЕСТВЕННЫЙ МОМЕНТ!!! 🪩 ОБЪЯВЛЯЕМ ИМЕНА ПОБЕДИТЕЛЕЙ 📣:
👏«Аль-Фауз», Джалал-Абадская область, Кыргызстан
👏«КиноЛагерь Калгари», г. Калгари, Канада
👏«Ливанский кедр», г. Бейрут, Ливан
👏Делегация «Марокканская мозаика», гг. Агадир, Рабат, Касабланка, Королевство Марокко
👏«Солнечная Монголия», г. Улан-Батор, Монголия
👏«Турецкие артековцы», гг. Стамбул, Анкара, Турция
👏Ансамбль танца «Гранд Жэтэ», Москва, Россия
👏Ансамбль народного танца «КАРУНАЧКИ», г. Жабинка, Беларусь
👏Делегация «Акуна Матата», г. Найроби, Кения
👏Делегация «Бойчечак», г. Худжанд, Согдийская область, Таджикистан
👏Делегация «Вкус жизни», г. Мармарис, Турция
👏Делегация «Гаврош», гг. Париж, Страсбург, Лион, Марсель, Ницца, Франция
👏Делегация «Дети Нила» г. Каир, Египет
👏Делегация «Достояние Таджикистана», г. Худжанд, Республика Таджикистан (Команда учащихся 8-х классов «РТ ГБОУ «СОШ в г. Худжанд имени А.П. Чехова»)
👏Делегация «Жемчужины Нила», г. Хургада, Египет
👏Делегация «Калейдоскоп», г. Ирбид, Иордания
👏Делегация «Тутанхамоны», г. Шарм эль Шейх, г. Каир, Египет
👏Международный клуб «ПЕРЕКРЕСТОК» (Сборная более 20 стран)
👏Сборная команда Нидерландов, Нидерланды
👏Студия бального танца «Фламинго», г. Нарва, Эстония
👏Хореографическая студия «Жемчужина», г. Ташкент, Узбекистан
✨В ближайшее время в Телеграмм будет создана группа, куда мы пригласим руководителей делегаций, где будут обсуждаться организационные вопросы подготовки к смене в Артеке
#содружество#фондсодружество#druzhbafond#нашдомземля#артек#artek