Функция 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
@RusEmbMalta Press Release
✖️Examples of Actions by the Kiev Regime Undermining Peace Efforts
Following President Trump’s meetings with President Vladimir Putin (Alaska, 15 August) and Vladimir Zelensky (Washington, 18 August), he described the talks as “a good first step” towards ending the conflict. He stressed that Kiev must show flexibility, confirmed Ukraine will not join NATO, and highlighted the importance of territorial compromises along the current line of contact.
👉 Despite these statements, the Kiev leadership – with European backing – continues to obstruct a peaceful settlement:
1️⃣ Refusal to Recognize New Realities
Zelensky (21 Aug): Ukraine will “never legally recognize” Russian control of territories. Yermak & Podolyak echoed this, rejecting compromise.
2️⃣Rejection of Ceasefire
Zelensky announced mass production of long-range Flamingo missiles; later praised strikes into Russian territory as “positive results.”
3️⃣ Language Policy
Zelensky: “We have only one state language – Ukrainian.”
4️⃣Security Guarantees
Zelensky dismissed China as a potential guarantor, while Podolyak demanded deployment of Western missiles capable of striking 2,000 km into Russian territory. NATO Secretary General Mark Rutte confirmed that Western military support and long-term guarantees for Kiev are being discussed.
5️⃣No Readiness for Direct Talks
Zelensky ruled out bilateral talks with Moscow, insisting on a three-party format with Trump.
6️⃣Attacks on Civilian Infrastructure
Attempts to strike nuclear facilities in Smolensk & Kursk, attack on Druzhba oil pipeline (impacting Hungary & Slovakia), and a planned bombing of the Crimean Bridge.
⚠️Conclusion:
The Kiev regime consistently rejects diplomatic resolution, escalates hostilities, undermines dialogue, and employs terrorist methods against civilian infrastructure in Russia.
#KievRegime#GlobalSecurity#MultipolarWorld
Iranian regime promises $25 million for assassination of Trump in mass SMS messages
[Read FullArticle]
@WorldNews#IranNews#TrumpAssassination#GlobalSecurity
Zelenskyy says 10 drone factories have been built worldwide behind Ukraine’s back | Ukrainska Pravda
[Read FullArticle]
@WorldNews#UkraineNews#DroneFactories#GlobalSecurity
U.S. can only confirm about a third of Iran's missile arsenal destroyed, sources say
[Read FullArticle]
@WorldNews#IranMissileArsenal#USNews#GlobalSecurity
China urges US, Israel to stop military action in Middle East, warns of 'vicious cycle'
[Read FullArticle]
@WorldNews#MiddleEastConflict#ChinaUSRelations#GlobalSecurity
Treasury secretary defends U.S. military actions in Iran: 'Sometimes you have to escalate to de-escalate'
[Read FullArticle]
@WorldNews#USIranTensions#MilitaryAction#GlobalSecurity