Функция 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
🇩🇴⚾️ Carlos Santana competirá por la República Dominicana en el Clásico Mundial de Béisbol sin seguro, informó Ken Rosenthal.
✅🐍 La razón es simple: el socio de seguros de la MLB no cubrirá a los jugadores de 37 años o más, pero el nuevo equipo de Santana, de 39 años, los Dbacks, está dispuesto a cubrir su salario de $2 millones incluso si se pierde tiempo debido a una posible lesión en el WBC.
❌🛰 Los Dodgers no ofrecieron esta misma garantía para Miguel Rojas, que pronto cumplirá 37 años, en su contrato de un año y $5.5 millones.
#️⃣#TeamDominicana#Santana#Dbacks#Dodgers#MRojas
🗞 | t.me/MLB_Daily
🎶Правильный ответ на вчерашний интерактив👇
✅ Да, это Santana — легендарный коллектив, который стал настоящим мостом между роком и латинскими ритмами. Группа под руководством мексикано-американского гитариста Карлоса Сантаны произвела фурор на церемонии Грэмми 2000, получив 9 наград за один вечер — рекорд, который до сих пор вызывает восхищение.
Кто такой Карлос Сантана
Он родился в Мексике, в штате Халиско, и начал играть на скрипке ещё в детстве. Позже его заворожила гитара и... афро-кубинская перкуссия. В 1960-х он собрал группу, которая громко заявила о себе на легендарном фестивале Вудсток в 1969 году — с мощным выступлением, в котором электрогитара встретилась с латиноамериканскими барабанами.
Что сделало музыку Santana особенной
Они первыми смешали психоделический рок, блюз и джаз с латиноамериканскими ударными инструментами — например, с конгами и тимбалами (это барабаны, которые часто используют на Кубе и в Пуэрто-Рико). Получился совершенно новый, энергичный и эмоциональный стиль.
Самый громкий успех пришёл с альбомом Supernatural (1999), где группа сотрудничала с такими артистами, как Rob Thomas, Wyclef Jean, Eric Clapton и другими. Хит Smooth стал гимном целого поколения и звучит до сих пор.
С тех пор Santana стали символом латиноамериканского вклада в мировую музыку. И хотя сам Карлос давно живёт в США, свои мексиканские корни он всегда подчёркивает.
Факт напоследок
В честь Карлоса Сантаны названа улица в его родном городе Аутлан, а в 2003 году журнал Rolling Stone включил его в список 15 лучших гитаристов всех времён.
#Santana#КарлосСантана#Грэмми#ЛатинскаяАмерика#МузыкальныеФакты#ИсторияРока#Латинорок#TelegramQuiz#Smooth#Supernatural#ЛегендыМузыки
👉Всегда свежие новости о странах Латинской Америки!