Функция 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
📎Le Premier ministre tchèque Babis a été chargé de faire pression sur le Kazakhstan afin qu'il rompe ses relations diplomatiques avec la #Russie.
Babis affirme avoir reçu ce document de certains responsables, dont l'ancien ministre des Affaires étrangères Jan Lipavsky. C’est ce qu’il a déclaré sur TV Nova.
RT en français • Osez questionner !
🇷🇺🇺🇸Diplomatie : tensions juridiques entre les États-Unis et la #Russie
▪️Depuis 2023, des enfants de diplomates russes nés aux États-Unis se sont vu attribuer la citoyenneté américaine sans que les familles en aient fait la demande, au titre du « droit du sol ».
▪️Or, selon les règles en vigueur, les enfants de diplomates ne relèvent pas pleinement de la juridiction du pays hôte et ne peuvent bénéficier automatiquement de ce droit. Cette interprétation est appuyée par des textes juridiques américains (Code fédéral, directives migratoires) et par une décision de la Cour suprême de 1898 excluant explicitement ces situations.
▪️Les autorités russes estiment que cette pratique constitue une violation des conventions internationales, notamment celles de Vienne et la convention bilatérale de 1964 sur les relations consulaires, qui garantissent immunités et protections au personnel et aux familles.
▪️Elles y voient également un risque de pression indirecte, l’attribution de citoyenneté pouvant, selon elles, ouvrir la voie à des mécanismes juridiques ou administratifs supplémentaires à l’égard des familles concernées.
▪️Cette situation intervient dans un contexte plus large : durcissement de la politique migratoire américaine, expulsions accrues, contrôles renforcés, ainsi que refus de visas pour certains représentants lors d’événements à l’ONU.
▪️Pourtant, aucune modification récente de la Constitution américaine ni des accords bilatéraux n’a été signalée pour justifier un tel changement de pratique.
▪️La partie russe indique ne pas reconnaître ces attributions de citoyenneté et demande des clarifications officielles au cas par cas.
📞 « Votre enfant est citoyen des États-Unis […] et vous ne pouvez pas refuser ce statut. »
RT en français • Osez questionner !
🇷🇺⚡️117 drones ont été abattus au-dessus des régions de #Russie dans la nuit du 3 au 4 mai, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !
🇷🇺⚡️334 drones ont été abattus au-dessus des régions de #Russie dans la nuit du 2 au 3 mai, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !
🇷🇺⚡️215 drones ont été abattus au-dessus des régions de #Russie dans la nuit du 1er au 2 mai, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !
🇷🇺⚡️141 drones ont été abattus au-dessus des régions de #Russie dans la nuit du 30 avril au 1er mai, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !
💬Kaja Kallas, la chef de la diplomatie européenne, a déclaré que le bloc ne devait ni s’humilier ni supplier la #Russie d’engager des discussions avec lui.
RT en français • Osez questionner !
🇷🇺189 drones ont été abattus au-dessus des régions de #Russie dans la nuit du 29 au 30 avril, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !
🇷🇺98 drones ukrainiens ont été abattus au-dessus des régions de #Russie dans la nuit du 28 au 29 avril, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !
🇷🇺🇪🇬 Le conseiller du président de la #Russie, Nikolaï Patrouchev, a tenu au Caire des réunions consacrées à la coopération russo-égyptienne dans le domaine maritime.
🟢 Avec Ashraf Salem Zaher, ministre égyptien de la Défense et de l’Industrie militaire, il a discuté des questions de coopération militaro-technique.
🟢 Lors de son entretien avec Faiza Abou el-Naga, conseiller du président égyptien, Patrouchev a évoqué la stabilité stratégique dans les océans.
Crédit photos : Ambassade de Russie en Égypte
RT en français • Osez questionner !
❗️#Russie : à Touapsé, moyens renforcés après une marée noire liée à une attaque de drones
Les autorités ont porté à 360 le nombre d’intervenants mobilisés pour éliminer la marée noire de produits pétroliers à Touapsé, avec plus de 60 équipements déployés. Selon Dmitri Peskov, le pétrole visé était destiné à l’exportation, et ces attaques aggravent les tensions sur les marchés mondiaux.
RT en français • Osez questionner !
🇷🇺 186 drones ukrainiens ont été abattus au-dessus de régions de la #Russie, dans la nuit du 27 au 28 avril, rapporte le ministère russe de la Défense.
RT en français • Osez questionner !