Функция 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
❗️ПОИСК ПАРТНЁРА
❗️Екатерина Ярощук
Год рождения: 2009
Город: Дмитров, Россия
Рост: 162 см
Класс: St (S), La (S)
Телефон:
+7 (968) 517-23-23, Екатерина
КМС, Молодёжь • бронзовый призер ЦФО 2025 • четвертьфиналист крупных соревнований • победитель и призер КС 2024
#dancesport#ballroomdance
❗️Поиск партнёра
❗️Анастасия
Год рождения: 2012
Город: Москва, Россия
Рост: 165 см
Класс: St (B), La (B)
Клуб: Империя
Телефон:
+7 (916) 090-06-00 - тренер
+7 (905) 693-17-40 - родитель
Трудолюбивая, целеустремленная, не конфликтная, нацеленная на результат партнерша. 165 см без каблука. Опыт в паре. Заинтересованные родители. Сборы, ежедневные индивидуальные занятия, турниры.
#dancesport#ballroomdance
#поискпартнерапобальнымтанцам
❗️Поиск партнера
❗️Софья Доценко
Год рождения: 2016
Город: Москва, Россия
Рост: 139 см
Класс: St (E), La (E)
Клуб: Империя
Телефон: +7 (905) 708-85-06 (родитель)
Ищет партнёра по бальным танцам.
Клуб: Империя (Москва / регион по согласованию)
Доценко Софья – артистичная партнерша 2016 г.р. Рост:139 без каблука.
Сейчас: выступает в E-классе Соло. Занимается регулярно — 5 раз в неделю, быстро учится, трудолюбива и крайне эмпатична.
Софья — энергичная и эмоциональная девочка, которая живёт танцами. Быстро осваивает новые движения, любит выступления на турнирах и стремится к качественному парному танцу.
Ищет серьёзного, мотивированного партнёра с близким ростом (рассмотрим варианты) для создания постоянной пары, совместных тренировок и прогресса в выступлениях. Готова перейти к партнёру, если найдём максимально качественное и дружелюбное партнёрство. Софья ведет свой танцевальный телеграм канал https://t.me/dot_s_dance
#dancesport#ballroomdance
#поискпартнерапобальнымтанцам
❗️ПОИСК ПАРТНЕРА
❗️Анна Ивашенко
Год рождения: 2009
Город: Санкт-Петербург
Рост: 155 см
Класс: St (S), La (S)
Клуб: Лидер
Телефон
+7 (950) 229-32-32 - Тренер
+7 (903) 895-70-97 - Родитель
Финалистка Первенства СПБ, полуфинал ВС, победитель и призер КС, яркая, сильная, трудолюбивая, общительная, без материальных проблем, ищу партнера на La или 10ку, возможен переезд в город партнера
#dancesport#ballroomdance
#поискпартнерапобальнымтанцам
ПОИСК ПАРТНЁРШИ
Александр Лучинкин
Год рождения: 2007
Город: Москва, Россия
Рост: 183 см
Класс: St (A), La (A)
Клуб: ПРО движение
Телефон:
+7 (963) 993-36-85 - Тренер
+7 (926) 284-29-62 - Родитель
Ищет партнершу на ST или двоеборье (10-ка). Кандидат в мастера спорта. Набраны очки на S-класс по обеим программам. Тренеры: Зарецкая М.А. (St), Просвирнина Л.В. (La)
#dancesport#ballroomdance
#поискпартнерапобальнымтанцам
Добрый вечер, влюбленные в бальные танцы!
Доконца АВГУСТА в разделе ПОИСК ПАРТНЁРА уменьшили цены на услуги приоритизации анкет и размещения соответсвующих объявлений в наших соцсетях для всех соискателей!
Самое время найти себе классного партнёра/партнёршу на новый танцевальный сезон!
#dancesport#ballroomdance
#lookingforadancepartner
❗️ПОИСК ПАРТНЁРШИ
❗️Александр
Год рождения: 2012
Город: Москва, Россия
Рост: 178 см
Класс: St (D), La (D)
Клуб: Тринити Данс
Телефон:
+7 (915) 456-71-81 - Тренер
+7 (903) 233-89-91 - Родитель
Ищет целеустремлённую партнёршу. Индивы, сборы, турниры обязательны. Занятия проходят в районе метро Новогиреево.
- - -
Больше анкет на сайте:
www.dancesport.ru/partners
#поискпартнерапобальнымтанцам
#dancesportpartnersearch
#dancesportpartners
#ballroomdance
dancesport