Функция 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
Polizei-Chef: Schütze des Gala-Dinners war ein Hotelgast
#Trump
#Attentat
TEILEN
Folgt mir auf Telegram
↕️↕️↕️
https://t.me/Kampf_fuer_unsere_Zukunft
Chat-Kanal
⬇️⬇️⬇️
https://t.me/IavYc2SRFdY1OGY6
Rechtfertigt ZDF USA-Korrespondent Elmar Theveßen hier das versuchte #Attentat auf #Trump?
Motto: Selbst schuld!
https://x.com/DrLuetke/status/2048453819491578210
🇷🇺 Le Service fédéral de sécurité (FSB) russe a déjoué un attentat préparé par les services secrets ukrainiens contre des dirigeants du Service fédéral de supervision des communications, des technologies de l’information et des médias de masse (Roskomnadzor), a rapporté son centre des relations publiques. Sept suspects ont été arrêtés à Moscou, Oufa, Novossibirsk et Iaroslavl.
Le chef présumé du groupe, un Moscovite de 22 ans, a été éliminé alors qu’il opposait une résistance armée.
#russie#fsb#attentat
🇷🇺Le Service fédéral de sécurité (FSB) a diffusé des images du déminage d’un scooter électrique près d’un centre d’affaires à Moscou.
Sur place, un engin explosif improvisé a été saisi et neutralisé. Il était contrôlé à distance via un relais Wi-Fi intégré à un système de maison connectée et un modem 4G.
#russie#fsb#attentat
🇷🇺 Le Service fédéral de sécurité (FSB) russe a déjoué à Iekaterinbourg un projet d’attentat visant l’un des dirigeants d’une entreprise du complexe militaro-industriel de la région de Sverdlovsk. Lors de l’arrestation du suspect, un coordinateur ukrainien a déclenché à distance un engin explosif improvisé, tuant l’exécutant, a rapporté le centre des relations publiques du FSB.
#russie#attentat#industrie
🇷🇸 Images de l’interpellation de deux individus soupçonnés d’avoir préparé un attentat contre le président serbe Aleksandar Vucic.
#serbie#attentat#président
🇷🇺 Le Service fédéral de sécurité (FSB) a déjoué un attentat visant un haut responsable militaire russe en Crimée. L'acte terroriste a été préparé par un habitant sur instruction des services spéciaux ukrainiens, l’auteur de l’attentat a été arrêté, a rapporté le centre des relations publiques du FSB.
Le Service fédéral de sécurité en République de Crimée a déjoué un attentat terroriste planifié par les services de renseignement ukrainiens contre un haut responsable militaire du ministère russe de la Défense,
a déclaré le FSB.
#russie#crimée#attentat#arrestation