Функция 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
🔸Совместноерешение миграционного вопроса между Россией и странами Центральной Азии — одно из ключевых условий формирования большого евразийского партнерства.
Такое мнение в ходе видеомоста с подключением МПЦ @SputnikUzbekistan выразил руководитель программы "Новая роль постсоветских государств" Института международных исследований, доцент кафедры международных отношений и внешней политики России МГИМО МИД России Сергей Маркедонов.
#video
#VIDEO🔴 Iraníes se congregan en el Puente Al Abyad (Blanco) de Ahvaz, tras las amenazas de Trump de destruir puentes y centrales eléctricas.
⭕️ Reportes indican, que tanto hombres como mujeres, están acudiendo en masa a las centrales eléctricas y formando grupos humanos a su alrededor para protegerlas.
⭕️ El presidente iraní, Masoud Pezeshkian ha asegurado que "más de 14 millones de iraníes patriotas han declarado, hasta este momento, su voluntad de sacrificar sus vidas en defensa del país".
🔸Может быть, странам Глобального Юга стоит действительно самим становиться инициаторами организаций и институтов нового многополярного мира, в котором не будет глобального доминирования Запада, заявил директор Центра исследовательских инициатив Ma’no Бахтиёр Эргашев в МПЦ @SputnikUzbekistan.
"Нам нужно предлагать новые международные институты, которые будут работать в интересах большинства стран и народов, а не узкой группы государств", - подчеркнул эксперт.
#video
Ea nu poartă răspundere. Ea doar a semnat.
Începem cu un banc despre Frederick II care a vizitat o închisoare ca să găsească că toți deținuții erau nevinovați.
Apoi aflăm că Maia Sandu nu a făcut nimic strașnic, ea doar a semnat.
Ne întrebăm mai apoi ce înseamnă „doar a semnat”.
Ca să ne întrebăm dacă e mai bine să greșești decît să admiți că semnătura ta nu valorează nimic.
#video
Sursa
În calitate mai bună pe Rumble.
👩🏻🔬🔸В Ташкенте состоялись премьеры короткометражных фильмов "Путь ученой" и "Два пути, две судьбы".
Картины повествуют о жизненном пути женщин-ученых, посвятивших себя науке, а также о трудностях, с которыми они сталкивались на этом пути, передает корреспондент @SputnikUzbekistan.
Фильмы сняли в сотрудничестве с Академией наук Узбекистана.
#video
Bizni kuzatib boring👇
😎Telegram |🌐Websayt
😎Facebook |😎YouTube|😎Instagram