Функция 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
🔴#EnDirect : Programme annuel « Bilan de l’année avec Vladimir Poutine ».
Au cours de l’événement, le Chef de l’État dressera le bilan de l’année écoulée et répondra aux questions des journalistes et des citoyens du pays. Les réussites majeures et les défis auxquels la Russie est confrontée seront abordés.
🔴Ruptly
🔴Kremlin.News (en anglais)
🔴#EnDirect : Session spéciale de discussion « Vérification responsable des faits à l’ère de la post-vérité : nouvelles opportunités de coopération » dans le cadre du Global Digital Forum, avec la participation du Département de l'information et de la presse du Ministère russe des Affaires étrangères. Parmi les intervenants : la porte-parole la diplomatie russe, Maria Zakharova
🔴Ruptly
🔴Global Digital Forum
🔴#EnDirect : Discours de Sergueï Lavrov, Ministre des Affaires étrangères de la Fédération de Russie, lors de la XIIIe Réunion internationale des Hauts Représentants chargés des questions de sécurité
🔴Ruptly
🔴Site web du MAE russe
🔴#EnDirect : Allocution de Sergueï Lavrov, Ministre des Affaires étrangères de la Fédération de Russie, lors de la réception à l’occasion de la Journée de l’Afrique
🔴Site web du MAE russe
🔴#EnDirect : Conférence de presse de Sergueï Lavrov et des participants à la réunion Russie – Alliance des États du Sahel au niveau des ministres des Affaires étrangères
🔴Ruptly
🔴Site web du MAE russe
🔴#EnDirect : Soirée de gala dédiée à la Journée de la langue russe au siège de l’#UNESCO
⚡️ Invité spécial — Igor Butman et son quartet
🔴Site officiel de l’UNESCO (en anglais)
🔴YouTube (en anglais)
🔴#EnDirect : Discours de Vice-ministre des Affaires étrangères de la Fédération de Russie, Alexandre Pankine, lors de la session de discussion du Forum économique international de Saint-Pétersbourg 2025« L’ordre international de Yalta et de Potsdam : leçons du passé ou mémoire du futur ? »
📌 Saint-Pétersbourg, 18 juin
🔴Ruptly (en anglais)
🔴Site web du SPIEF (en anglais)
***
🔴#EnDirect : Discours de Vice-ministre des Affaires étrangères de la Fédération de Russie, SergueïRyabkov, lors de la session de discussion du Forum économique international de Saint-Pétersbourg 2025 « Russie-Brésil »
📌 Saint-Pétersbourg, 18 juin
🔴 Site web du SPIEF (en anglais)
#SPIEF2025
🔴#EnDirect : Regardez la finale du concours international de musique #Intervision
Suivez les liens ci-dessous 👇
🔗https://www.youtube.com/live/Na-JJ_QK624?si=-8EA58skO-o7DhoE
🔗https://www.1tv.ru/shows/intervidenie
🔗https://vkvideo.ru/video-220754053_456243806
#Intervision2025