Функция 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 président et le vice-président des États-Unis n'ont pas été blessés lors de l'incident survenu lors de la réception de l'Association des correspondants de la Maison Blanche à #Washington, rapporte AP.
RT en français • Osez questionner !
⚠️Pression maximale sur Téhéran
🗣#Washington confirme poursuivre le blocus des ports iraniens afin de saturer les capacités pétrolières et de frapper les revenus du pays.
RT en français • Osez questionner !
🇺🇸#Washington, DC. Tents where homeless people were living are taken down and thrown in garbage trucks.
(The nearly dozen unhoused individuals were notified yesterday to move out, aka “immediate disposition” from the city.)
Follow us -> LiveLeak
🇮🇷Téhéran pose ses conditions
💬 L’#Iran aurait transmis à #Washington, via des médiateurs, une feuille de route en trois étapes pour encadrer d’éventuelles négociations.
RT en français • Osez questionner !
"Epstein Walk of Shame" appeared in the center of Washington
Unknown people placed signs on Farragut Square with the names of politicians and billionaires who were mentioned in connection with the scandalous case.
The installation was designed in the style of the Hollywood "Walk of Fame". Passersby could see on the sidewalk the names of famous people whose reputations had suffered due to their ties to Epstein.
#Epstein#Washington
👂More on Trump's Ear ⚠️
⏺Le Groenland, nouveau test de loyauté pour les alliés de #Washington
Le Groenland s’impose comme un nouveau point de tension entre Washington et les capitales européennes. Droits de douane, menaces économiques, pressions politiques : Donald #Trump rebat les cartes et place ses alliés face à un choix difficile.
Les derniers développements autour d’un dossier qui pourrait fissurer l’unité transatlantique – dans le reportage d’Igor Kourachenko.
RT en français • Osez questionner !
💵 Droits de douane : nouvelle vague de pression économique des États-Unis
Nouvelle tempête fiscale provoquée par Donald #Trump : les taxes pleuvent sur des dizaines de pays. La nouvelle décision de #Washington entre en vigueur le 7 août. Mais si certains plient face à la pression américaine, d’autres refusent de sacrifier leur souveraineté économique. Les détails avec Igor Kourachenko.
RT en français • Osez questionner !
🎥#Moscou et #Washington restent attentifs à leurs intérêts nationaux
Une perspective de réunion au sommet qui a fait couler beaucoup d'encre ces derniers jours... Mais la partie russe a tenu à faire savoir sa position. Les détails avec notre reporter, Antoine Cléraux.
RT en français • Osez questionner !
Collaboration entre #Moscou et #Washington : quelles réactions ?
Trump a une vision beaucoup plus optimiste des négociations entre les États-Unis et la Russie. On peut en dire autant de Vladimir Poutine. Évidemment, le plus mécontent reste Volodymyr Zelensky. Les détails avec Antoine Cléraux et Igor Kourachenko.
RT en français • Osez questionner !
🛂 A U.S. Immigration and Customs Enforcement officer 🇺🇸 was seriously injured Monday after being struck in the face with a metal coffee cup during an arrest operation in Houston, according to the Department of Homeland Security.
The officer sustained a deep laceration requiring 13 stitches, plus several burns to his face. 🩹😢
Authorities say the suspect, Walter Leonel Perez Rodriguez, a previously deported Salvadoran national with convictions for sexual assault of a minor, child fondling and multiple DUIs, attacked the officer while agents attempted to take him into custody. 🚔⚠️
#protests#Washington
👂More on Trump's Ear