Функция 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
📍Date: Friday, 27 June 2025
🕢Time: 19:40–20:20
📌Venue: BURBON Wine Bar, 47 Sako i Vantsetti Street, Yekaterinburg
🎶An African band to perform at the Ural Music Night festival in Yekaterinburg!
The Office of the Honorary Consul of South Africa, together with the festival team, has invited 4Groove—a dynamic band formed by Nigerian students of Ural Federal University (UrFU)—to take part in this year’s program.
Come and enjoy the rhythm of Africa! 🎤🔥
The project is supported by the Presidential Fund for Cultural Initiatives, the National Project Tourism and Hospitality Industry, the Governor of the Sverdlovsk Region, and the Yekaterinburg City Administration.
Sber is the festival’s official general partner.
#UralMusicNight#4Groove#URFU#Yekaterinburg#SouthAfrica#AfricanMusic#MusicFestival
🎶An African band to perform at the Ural Music Night festival in Yekaterinburg!
The Office of the Honorary Consul of South Africa, together with the festival team, has invited 4Groove—a dynamic band formed by Nigerian students of Ural Federal University (UrFU)—to take part in this year’s program.
🎗 Last year, 4Groove performed a heartfelt charity concert for children and parents at the Children’s Oncology and Hematology Center. 📹 Watch the short videos from that performance—pure joy and energy!
📍Date: Friday, 27 June 2025
🕢Time: 19:40–20:20
📌Venue: BURBON Wine Bar, 47 Sako i Vantsetti Street, Yekaterinburg
Come and enjoy the rhythm of Africa! 🎤🔥
The project is supported by the Presidential Fund for Cultural Initiatives, the National Project Tourism and Hospitality Industry, the Governor of the Sverdlovsk Region, and the Yekaterinburg City Administration.
Sber is the festival’s official general partner.
#UralMusicNight#4Groove#URFU#Yekaterinburg#SouthAfrica#AfricanMusic#MusicFestival
📍Когда: пятница, 27 июня 2025 года
🕢Во сколько: 19:40–20:20
📌Где: Винотека БУРБОН, ул. Сакко и Ванцетти 47, Екатеринбург
🎶Африканская группа выступит на фестивале «Ночь музыки» в Екатеринбурге!
Офис Почётного консула ЮАР и организаторы фестиваля пригласили к участию 4Groove — музыкальный коллектив, созданный студентами УрФУ из Нигерии.
Приходите — будет по-настоящему жарко! 🎤🔥
Проект реализуется при поддержке Президентского фонда культурных инициатив, Национального проекта «Туризм и индустрия гостеприимства», Губернатора Свердловской области и Администрации города Екатеринбурга. Генеральный партнер фестиваля — Сбер.
#НочьМузыки#4Groove#УрФУ#Екатеринбург#ЮАР#Африка#Музыка#АфриканскаяМузыка
🎶Африканская группа выступит на фестивале «Ночь музыки» в Екатеринбурге!
Офис Почётного консула ЮАР и организаторы фестиваля пригласили к участию 4Groove — музыкальный коллектив, созданный студентами УрФУ из Нигерии.
🎗 В прошлом году 4Groove уже участвовала в фестивале, дав тёплый благотворительный концерт для детей и родителей в Центре детской онкогематологии. 📹 Посмотрите короткие видео с того выступления — настоящий заряд радости и энергии!
📍Когда: пятница, 27 июня 2025 года
🕢Во сколько: 19:40–20:20
📌Где: Винотека БУРБОН, ул. Сакко и Ванцетти, 47, Екатеринбург
Приходите — будет по-настоящему жарко! 🎤🔥
Проект реализуется при поддержке Президентского фонда культурных инициатив, Национального проекта «Туризм и индустрия гостеприимства», Губернатора Свердловской области и Администрации города Екатеринбурга. Генеральный партнер фестиваля — Сбер.
#НочьМузыки#4Groove#УрФУ#Екатеринбург#ЮАР#Африка#Музыка#АфриканскаяМузыка
🎶 An African band lit up the crowd at Ural Music Night in Yekaterinburg!
Thanks to the collaboration between the Office of the Honorary Consul of South Africa and the festival organizers, 4Groove — a vibrant band formed by Nigerian students at Ural Federal University (URFU) — was invited to perform.
📹 Check out these energetic performance videos! 🎤🔥
#UralMusicNight#4Groove#URFU#Yekaterinburg#SouthAfrica#AfricanMusic#LiveMusic#MusicUnites
🎶 Африканская группа зажгла на фестивале «Ночь музыки» в Екатеринбурге!
Благодаря сотрудничеству Офиса Почётного консула ЮАР и команды фестиваля, на одной из площадок выступил 4Groove — яркий музыкальный коллектив, созданный студентами УрФУ из Нигерии.
📹 Наслаждайтесь видео с их энергичного выступления! 🎤🔥
#НочьМузыки#4Groove#УрФУ#Екатеринбург#ЮАР#Африка#Музыка#АфриканскаяМузыка#МузыкаОбъединяет