Функция 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
О ЛЮБВИ И НЕНАВИСТИ К НОТАМ, «СЛУХАЧАХ И ЗУБРИЛКАХ» 🙂
Дорогие друзья,
Видео, увы, не скачивается. Так что милости прошу во вражеский фб.
https://www.facebook.com/share/v/1F4KoPHTTd/?mibextid=wwXIfr
#piano
#classicalmusic
#musiceducation
О ПЕДАГОГАХ:
ЮРИЙ ИВАНОВИЧ БАТУЕВ (1934-1997) и «Три мушкетёра»
Признаюсь, не помню точно, когда был его День Рождения.
Он на этом никогда не акцентировал внимания.
Как и на всем остальном, что не касалось занятий. А вот день его ухода помню и поминаю его всегда - 13 сентября.
Юрий Иванович был уникальным для музыкантской среды человеком. Не помню, чтобы он когда-либо говорил местоимение «Я».
Например, «я играл то-то и там-то…» или «мою игру обожал тот-то»…. НИКОГДА.
Свята для него была память об Учителе - Самуиле Евгеньевиче ФЕЙНБЕРГЕ. Вот это имя слышала постоянно.
Как то раз, в самом начале наших занятий (я была в третьем классе), придя в 44й класс Училища при Московской консерватории, начала играть Fis-dur’ную фугу Баха из 1 тома ХТК. Как всегда, наизусть.
По нотам приносить было не принято. Вдруг он вылетел из класса, громко хлопнув дверью… Влетел также стремительно, уже с Борисом Абрамовичем Шацкесом. «Ну давай, сыграй ещё раз». Я начала… «Нет! Как в первый раз, пожалуйста!». Я ничего не понимаю. «Ладно, Юра…» - сказал Шацкес. Оказалось, в первый раз сыграла на полтона ниже. Он не остановил!
Про себя называла их «три мушкетера»: Шацкес, Бунин и Батуев. Всегда помню их вместе - на классных вечерах, в классе друг у друга, в коридоре. Благородные лица, красивые люди, открытые улыбки. Как они радовались успехам учеников друг друга! (И как это нетипично…) На выходных - вместе: лес, грибы, рыбалка. Разговоры - о музыке и учениках. Это, конечно, создавало особую атмосферу.
Когда погиб Шацкес, Юрий Иванович стоял белый, как полотно. Думаю, он до последних дней не оправился от этой потери.
А Виктор Владимирович Бунин со своей лучезарной улыбкой… В нем всегда было что-то нездешнее, ещё дореволюционно-несоветское. Как мы любили ходить на его концерты! Именно так я представляю себе Профессоров прошлого: блестящие манеры, доброжелательность, интеллект.
Сегодня у него День Рождения. Многие Лета!
#piano
#classicalmusic
#MusicEducation