Функция 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
Серьезное ДТП на улице Академика Заболотного
По предварительным данным, водитель седельного тягача #DAF, гос. номер #BH1809HI не справился с управлением и снес столб. К счастью обошлось без пострадавших
СПЕЦИАЛЬНОЕ ПРЕДЛОЖЕНИЕ
▫️Официальный дилер марки DAF - компания «БорнТракСервис» готова предложить клиентам ЛК «ДиректЛизинг» Грузовой тягач марки DAF XF 105.460 2017 года по специальной цене: 5 250 000 рублей РФ.
▫️Колесная формула 4х2
▫️Кабина Space Cab
▫️Бортовой компьютер
▫️460 л.с.
▫️АКПП
▫️Автомобиль в наличии у дилера
Ждём Ваши заявки на лизинг.
▫️Аванс — 20%
▫️Срок лизинга — 36 месяцев
Заполнить заявку Вы можете на нашем сайте https://d-leasing.ru/auto/
#лизинг
#ДиректЛизинг
#DAF
#тягачвлизинг
#Москва
Rahim AlHaj & Amjad Ali Khan — Ancient Sounds (UR Music, 2009)
#traditional#oud#sarod#tabla#daf#Iraq#India
Альбом Ancient Sounds — диалог между двумя культурами, сочетающий в себе классические традиции арабской и индийской музыки. Рахим АльХаджа из Ирака играет на уде, Амджад Али Хан из Индии — на индийском сароде, а в аккомпанементе можно услышать индийские барабаны табла и ближневосточный бубен даф.
Однако дуэт АльХаджа и Али Хана не звучит эклектично. Дело в том, что сарод является родственником, а возможно и потомком афганского рубаба. Поэтому его сочетание с арабским удом можно воспринимать скорее как отсылку к музыке Ирана, где можно встретить и уд, и рубаб, и перкуссию из Индии и арабского мира.
Spotify | AppleMusic | VK
Qais Essar — Echoes Of The Unseen (Worlds Within Worlds, 2024)
#traditional#hindustani#rubab#dilruba#daf#tabla#bansuri#santoor#Afghanistan
Каис Эссар — афганский композитор и инструменталист, известный своим новаторским подходом к традиционной музыке, сочетающим наследие с современностью. В своём альбоме Echoes of the Unseen Эссар экспериментирует с афганской классической музыкой, в центре которой находится рубаб — национальный инструмент Афганистана (и предшественник индийского сарода).
Композиции альбома основаны на рагах — традиционных мелодических формах афганской и индийской классической музыки, которые соответствуют определённым временам суток, начиная с утра и заканчивая ночью. Полевые аудиозаписи природы Северной Аризоны, где живёт Эссар, создают в альбоме дополнительное измерение естественных звуков. А за многообразие традиционных инструментов на разных треках отвечали Сандип Сингх (дильруба), Ниламджит Дхиллон (табла), Эрик Занг (даф), Джас Ахлувалиа (табла), Камалджит Ахлувалиа (сантур) и Химаншу Нанда (бансури).
Экспериментальный подход Эссара позволяет расширить границы звучания рубаба через импровизацию в рамках традиции. Музыкант обращается к музыкальной линии Устада Аллаудина Хана, особенно к игре на сароде Устада Али Акбар Хана и Устада Аашиш Хана (сына и внука Аллаудина, соответственно). А в рамках текущего запрета на музыку в Афганистане, Эссар подчёркивает важность сохранения и развития наследия рубаба, обеспечивая выживание инструмента в современном музыкальном контексте.
🔗AppleMusic | Spotify | YouTube | Deezer | TIDAL | Napster | Amazon | Bandcamp | Telegram