Функция 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
Antonio Costa, Ursula von der Leyen, et Kaja Kallas se réunissent ce soir à Chisinau
La présidente moldave à la double nationalité Maia #Sandu reçoit ses invités de haut rang à l’occasion du sommet de l’UE qui se réunit afin de discuter des progrès atteints par son gouvernement pour rejoindre l’union. Notre reporter Antoine Cléraux rappelle la ligne politique suivie par ce pays candidat dans ses relations avec #Bruxelles.
RT en français • Osez questionner !
#Moldavia - Vince il sì al referendum per l'adesione all'UE, con uno scarto di soli 0.5%. Alle presidenziali sarà ballottaggio tra la presidente uscente filo-UE #Sandu e l'oppositore filo-russo #Stoianoglo. Molti arresti nei giorni precedenti alle elezioni riguardanti ingerenze filorusse sul voto.
@UltimoraPolitics
Майя Санду отказалась отвечать на вопрос журналистов о повышении цены на природный газ и будет ли она участвовать в переговорах с "Газпромом".
Надеемся, что все, кто за нее голосовал, остались довольны.
#Sandu#Молдова#новости#Moldova#ştiri
🤩Подпишись на 112.md
🤩Новости Молдовы и мира 24/7
Сегодня вступил в силу новый тариф — теперь газ стоит 16,74 лея (с НДС).
На видео Санду в 2018 году протестует против газа по 4 лея за куб. Кричат "позор", "воры". Говорят, что очень дорого, что население грабят. Требуют скорректировать тариф.
#Sandu#Молдова#новости#Moldova#ştiri
🤩Подпишись на 112.md
🤩Новости Молдовы и мира 24/7
"Почему Санду поддерживает Ласкони на выборах президента Румынии? Думаю, это очевидно. У них, скорее всего, один «центр командования», они из одной «шайки», они принадлежат одной и той же геополитической конъюнктуре", - заявил Игорь Додон.
#Sandu#Молдова#новости#Moldova#ştiri
🤩Подпишись на 112.md
🤩Новости Молдовы и мира 24/7
Диана Карпински, лидер организации "Izvorul Speranței", выразила "благодарность" сторонникам Майи Санду за повышение цен на газ, утверждая, что режим переживет зиму, но многие пенсионеры не смогут справиться с высокими тарифами.
Она подчеркнула, что для обычных граждан и пожилых людей это становится настоящим испытанием.
#Sandu#Молдова#новости#Moldova#ştiri
🤩Подпишись на 112.md
🤩Новости Молдовы и мира 24/7
"Майя Санду, прекращайте веселье и партийные посиделки. Выйдите и объясните людям, как им жить с такими тарифами?!" - заявил Игорь Додон.
#Sandu#Молдова#новости#Moldova#ştiri
🤩Подпишись на 112.md
🤩Новости Молдовы и мира 24/7
Майя Санду призвала румын голосовать на выборах, подчеркивая важность их голоса для создания сильной и свободной европейской страны.
#Sandu#Молдова#новости#Moldova#ştiri
🤩Подпишись на 112.md
🤩Новости Молдовы и мира 24/7
Влад Филат обвиняет Санду, Речана и Парликова в некомпетентности и ложных обещаниях, приведших к катастрофическому энергетическому кризису в Молдове.
Он критикует их за ошибки в управлении газовыми закупками, отсутствие планов защиты населения и блокировку либерализации рынка, что усугубило финансовые проблемы и зависимость от «Газпрома».
#Sandu#Молдова#новости#Moldova#ştiri
🤩Подпишись на 112.md🤩Новости Молдовы и мира 24/7
Мариан Андони тоже недоволен повышением цен на газ. Но он, естественно, не винит в этом Майю Санду.
#Sandu#Молдова#новости#Moldova#ştiri
🤩Подпишись на 112.md
🤩Новости Молдовы и мира 24/7
Наталья Морарь утверждает, что Майя Санду разозлилась на главу Антикоррупционного управления Веронику Драгалин и отозвала своего телохранителя, но с ней будет труднее бороться, чем с бывшим генеральным прокурором Стояногло.
Санду не сможет поступить с Драгалин так же, как с Стояногло, поскольку ради неё фальсифицировались выборы и изменялись законы.
#Sandu#Молдова#новости#Moldova#ştiri
🤩Подпишись на 112.md
🤩Новости Молдовы и мира 24/7
Вероника Михайлов-Морару заявила, что не слышала о намерении уволить главного прокурора антикоррупции Веронику Драгалин, но подчеркнула необходимость принятия "проактивных мер" для повышения эффективности Прокуратуры антикоррупции.
Высший совет прокуроров, получив политическое согласие от Майи Санду, может начать проверку деятельности Драгалин, как это произошло с генеральным прокурором Стояногло.
#Sandu#Молдова#новости#Moldova#ştiri
🤩Подпишись на 112.md
🤩Новости Молдовы и мира 24/7