Функция 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
❗️Il vicepresidente della Camera Giorgio #Mulè a ‘Il Foglio’ minaccia il governo sulla manovra: "Forza Italia non è stata coinvolta. Lo ha detto anche Antonio Tajani. Forza Italia ha il dovere di intervenire per arginare la tendenza ‘bozzofila’ altrimenti non vota."
@UltimoraPolitics
#Italia
Giorgio #Mulè (#FI): "Salvini vuole fare il ministro dell'interno? Legittimo, ma non diventerà uno sceriffo con la pistola e la stellina sul petto. La linea è quella della coalizione"
@UltimoraPolitics
Il giurì d'onore chiesto da Giuseppe #Conte sulle parole di Giorgia #Meloni si farà. L'annuncio del presidente della #Camera Lorenzo #Fontana: "Ho assunto una decisione qualche giorno fa. Si farà. Lo presiederà Giorgio #Mulè ed auspico che si possa dirimere la questione"
@UltimoraPolitics
#Italia
Sottosegretario Giorgio #Mulè (#FI|EPP): "Il governo non sta preparando un nuovo decreto armi da inviare all'Ucraina"
#Esclusiva@UltimoraPolitics
#Italia
❗️In pole position per sostituire #Tajani (#FI|EPP) in caso di dimissioni, secondo rumors raccolti dal Giornale d'Italia, ci sarebbe Roberto #Occhiuto (FI), governatore della Calabria, considerato affidabile e vicino a Marina #Berlusconi, che nel frattempo sta preparando la discesa in campo prevista per ottobre 2026. Da non scartare anche Giorgio #Mulè (FI).
@Osservatorioitaliano
#Italia
ANSA — Fonti interne fanno sapere che dopo Pasqua si procederà anche alla sostituzione di Paolo #Barelli. Anche perchè nel gruppo dei deputati i favorevoli ad un cambio al vertice sono più numerosi dei sostenitori dell'attuale capogruppo. Il nome in pole per sostituirlo è quello dell'attuale Vicepresidente della Camera Giorgio #Mulè anche se nelle ultime ore sarebbe circolato anche quello di Deborah #Bergamini. La situazione resta congelata in attesa del faccia a faccia con la figlia del Cavaliere per cercare di trovare una modalità comune per gestire le scelte politiche del partito. La slavina però potrebbe non fermarsi solo al capogruppo. Tra i rumors ci sarebbe anche l'idea di sostituire Raffele #Nevi come portavoce di #FI|EPP.
@Osservatorioitaliano
Repubblica - #Berlusconi chiede cinque-sei ministeri per #FI. Per #Ronzulli Affari europei, Turismo o Anziani. Gli Esteri a #Tajani, l'Università a #Bernini, l'Editoria a #Barachini, un ministero per #Cattaneo e uno per #Mulè. E avverte: "La sfiducia a Ronzulli è sfiducia a me"
@UltimoraPolitics
#Italia
È stata resa nota la rosa dei sottosegretari:
📌 Rapporti con il parlamento - Deborah Bergamini (#FI|EPP) e Simona #Malpezzi (#PD|S&D)
📌 Sud e coesione sociale: Dalila #Nesci (#M5S|NI)
📌 Innovazione tecnologica e transizione digitale: Assuntela #Messina (#M5S|NI)
📌 Affari europei: Vincenzo #Amendola (#PD|S&D)
📌 Editoria: Giuseppe #Moles (#FI|EPP)
📌 Coordinamento della politica economica: Bruno #Tabacci (#CD)
📌 Sicurezza della Repubblica: Franco #Gabrielli
📌 Interni: Nicola #Moleni (#Lega), Ivan #Scalfarotto (#IV|RE), Carlo Sibilia (#M5S|NI)
📌 Giustizia: Anna #Macina (#M5S) e Francesco Paolo #Sisto (#FI|EPP)
📌 Difesa: Giorgio #Mulè (#FI|EPP) e Stefania #Pucciarelli (#Lega|ID)
📌 Economia: Laura #Castelli (#M5S|NI), Claudio #Durigon (#Lega|ID), Maria Cecilia #Guerra (#PD|S&D) e Alessandra #Sartore (#PD|S&D)
📌 Sviluppo economico: Gilberto Alberto #Fratin (#FI|EPP), Anna #Ascani (#PD|S&D) e Alessandra #Todde (#M5S|NI)
📌 Politiche agricole: Gianfranco #Battistoni (#FI|EPP) e Gian Marco #Centinaio (#Lega|ID)
📌 Transizione ecologica: Ilaria #Fontana (#M5S|NI) e Vannia #Gavia (#Lega|ID)
📌 Infrastrutture: Teresa #Bellanova (#IV|RE), Alessandro #Morelli (#Lega|ID) e Giancarlo #Cancelleri (#M5S|NI)
📌 Lavoro: Rossella #Accoto (#M5S|NI) e Tiziana #Nisini (#M5S)
📌 Istruzione: Barbara #Floridia (#M5S|NI) e Rossano #Sasso (#Lega|ID)
📌 Beni e attività culturali: Lucia #Borgonzoni (#Lega|ID)
📌 Salute: Pierpaolo #Sileri (#M5S|NI) e Andrea #Costa
📌 Esteri: Marina #Sereni (#PD|S&D), Benedetto #DellaVedova (#PiuE|RE) e Manlio #DiStefano (M5S|NI)
@NewsESondaggi