Функция 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
В Лос-Анджелесе состоялась 68-я церемония вручения музыкальной премии «Грэмми».
Собрали победителей в основных номинациях:
Песня года: Билли Айлиш — Wildflower
Запись года: Кендрик Ламар и SZA — Luther
Альбом года: Bad Bunny — Debí Tirar Más Fotos
Лучший новый артист: Оливия Дин
Лучший вокальный поп-альбом: Леди Гага — Mayhem
Лучший рэп-альбом: Кендрик Ламар — GNX
Лучший альбом в жанре R&B: Леон Томас — Mutt
Лидерами по количеству полученных наград стали Кендрик Ламар (5), Lady Gaga, Bad Bunny, Turnstile и Леон Томас (2).
@wownewsru#grammy2026
В главной номинации «Альбом года» победил Bad Bunny. Его работа «Debí Tirar Más Fotos» стала первым латиноамериканским альбомом в истории, который получил эту престижную награду.
@wownewsru#grammy2026
Секретный гость на «Grammy 2026» — певица Шер!
Артистку отметили за выдающийся вклад в музыку, а также она вышла на сцену, чтобы вручить награду в номинации «Запись года».
Правда в моменте она забыла вручить статуэтку и собралась уже уходить со сцены — надеемся, это было так задумано.
Победителем в этой номинации стал Кендрик Ламар.
И да, Шер 79 лет! Разве в это можно поверить?
@wownewsru#grammy2026
На церемонии «Grammy 2026» прошёл трибьют ушедшим музыкантам, в том числе легендарному Оззи Осборну.
Легенда соул-музыки Лорин Хилл вышла на сцену вместе с ведущими R&B и рэп-исполнителями.
Семья Оззи Шэрон, Келли и Джек Осборн находились в зале и были очень растроганы выступлением 💔
@wownewsru#grammy2026
Билли Айлиш с песней «Wildflower» получила «Grammy 2026» в номинации «Песня года».
К сожалению, «Abracadabra» не смогла повторить этот успех и уступила в борьбе в этой номинации.
@wownewsru#grammy2026
Сингл Lady Gaga «Disease» не одержал победу в номинации «Лучшее сольное поп-исполнение» на «Grammy 2026».
Несмотря на статус мощного лид-сингла и одного из самых обсуждаемых релизов года, композиции не удалось принести Леди Гаге третью статуэтку «Грэмми» за вечер.
Награда досталась треку «Messy» Лолы Янг.
@wownewsru#grammy2026
Альбом «MAYHEM» Lady Gaga одержал победу на «Grammy 2026» в номинации «Лучший вокальный поп-альбом».
Этот вечер стал триумфальным для Стефани: она получила вторую статуэтку за церемонию и 16-ю награду «Грэмми» в карьере, укрепив свой статус шестой самой награждаемой артистки в истории премии — наравне с Адель.
Особенно символично, что это первая победа Леди Гаги в данной номинации за последние 15 лет.
Поздравляем ❤️🔥
@wownewsru#grammy2026
Сабрина Карпентер второй год подряд зажигает сцену премии «Грэмми» яркими и запоминающимися выступлениями.
В этом году певица исполнила трек «Manchild» — делимся эффектными фрагментами шоу.
@wownewsru#grammy2026
Kendrick Lamar стал самым награждаемым рэпером в истории «Грэмми» — на его счету 26 побед. Ранее рекорд принадлежал Jay-Z с 25 наградами.
Сегодня Kendrick победил во всех рэп-номинациях «Grammy 2026».
Легенда жанра не иначе 🔥
@wownewsru#grammy2026