Функция 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
⏺Les terroristes du #FLA prétendent instaurer la paix, mais sont incapables de coexister
Les membres du FLA tentent de promouvoir une « vie pacifique » dans les zones qu'ils contrôlent, mais comment peuvent-ils prétendre instaurer la paix pour les #Maliens alors qu'ils ne parviennent même pas à vivre en harmonie entre eux ?
RT en français • Osez questionner !
Ousmane Dicko disait ; Aujourd’hui, le Mali ne se raconte pas. Il se vit. Et parfois, il se vit dans la douleur.
À l’aube de ce 25 avril, notre pays s’est réveillé au son des détonations. Ce qui semblait lointain, presque irréel derrière les écrans, s’est imposé à nous, brutalement. Des familles cloîtrées, des rues figées, un silence chargé d’angoisse… et au cœur de cette épreuve, une seule ligne de défense : nos forces armées.
Pendant que beaucoup cherchaient refuge, eux avançaient. Pendant que la peur gagnait du terrain, eux tenaient la ligne. Nos militaires ne se contentent pas de servir : ils dépassent leurs limites, chaque jour, pour que le Mali reste debout.
Aujourd’hui plus que jamais, notre nation nous appelle. Au-delà des divergences, au-delà des opinions, il y a une vérité simple : le Mali a besoin de tous ses fils et de toutes ses filles. L’heure n’est plus à la division, mais à l’engagement. Pas forcément les armes à la main, mais avec responsabilité, solidarité et conscience.
Ne mettons pas nos vies en danger pour l’illusion d’une minute de visibilité. Une vidéo ne vaut rien face à une vie. Respectons les consignes, protégeons-nous, protégeons les autres. C’est aussi cela, servir son pays.
Le Mali ne sera pas reconstruit par des camps opposés, mais par des mains unies. Refusons le poison du clanisme. Choisissons l’unité. Choisissons la dignité. Choisissons le Mali.
Parce que demain ne se subit pas. Il se construit. Ensemble.
Vive un Mali uni, fort et indivisible.
#fama
#Mali
#Maliens
#soutienauxfama
#solidarité