Функция 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
🇳🇱#PaesiBassi – Il partito liberal-progressista ed europeista #D66, primo partito alle ultime elezioni, ha raggiunto un accordo per formare un governo di minoranza con i democristiani del #CDA e il partito liberal-conservatore #VVD. La coalizione conta solo 66 seggi su 150 e dovrà quindi cercare appoggi esterni per passare ogni singola misura.
@UltimoraPolitics24
#PaesiBassi
L'ex deputata di #CDA|EPP Mona Keijzer è stata scelta come candidata Primo Ministro da #BBB|Centro-destra ruralista populista.
Keizer ha partecipato nell'ultimo governo #Rutte in qualità di Segretaria agli Affari Economici e le Politiche Climatiche.
@OsservatorioEsteri
🇳🇱#PaesiBassi – Nasce il governo di Rob #Jetten. Ex ministro dell’Energia, ha vinto le ultime elezioni con il suo partito liberal-progressista #D66, formando un governo di minoranza con il centrodestra #VVD e i democristiani del #CDA. A 38 anni è il più giovane premier della storia e il primo apertamente omosessuale a guidare il Paese.
@UltimoraPolitics24
#UE#Europa#PaesiBassi
Il governo ha nominato Wopke #Hoekstra (#CDA|EPP) come successore di Frans #Timmermans (#PvdA|S&D) nella carica di Commissario europeo per il clima e il Green Deal europeo.
@OsservatorioEsteri
#PaesiBassi🇳🇱
#Parlamentari
Exit poll di Ipsos I&O.
Distribuzione dei seggi.
🟩 Democratici 66 (#D66|RE): 27
⬛️ Partito per la Libertà (#PVV|PfE): 25
🟦 Partito Popolare per la Libertà e la Democrazia (#VVD|RE): 23
🟥 Sinistra Verde - Partito del Lavoro (#GLPvdA|G/EFA|S&D): 20
🟩 Appello Cristiano-Democratico (#CDA|PPE): 19
⬛️ Risposta Corretta 2021 (#JA21|ECR): 9
🟥 Forum per la Democrazia (#FvD|ESN): 6
🟩 Movimento Civico-Contadino (#BBB|PPE): 4
🟩 Partito per gli Animali (#PvdD|LEFT): 3
🟥 Partito Socialista (#SP|Sinistra): 3
🟦#DENK|Minoranze etniche: 3
Altri: 5
Maggioranza: 76
@TuttoElezioni
#PaesiBassi🇳🇱
#Parlamentari
Risultati finali.
Distribuzione dei seggi.
🟩 Democratici 66 (#D66|RE): 26
⬛️ Partito per la Libertà (#PVV|PfE): 26
🟦 Partito Popolare per la Libertà e la Democrazia (#VVD|RE): 22
🟥 Sinistra Verde - Partito del Lavoro (#GLPvdA|G/EFA|S&D): 20
🟩 Appello Cristiano-Democratico (#CDA|PPE): 19
⬛️ Risposta Corretta 2021 (#JA21|ECR): 9
🟥 Forum per la Democrazia (#FvD|ESN): 7
🟩 Movimento Civico-Contadino (#BBB|PPE): 4
🟦#DENK|Minoranze etniche: 3
🟧 Partito Politico Riformato (#SGP|ECR): 3
🟩 Partito per gli Animali (#PvdD|LEFT): 3
Altri: 8
Maggioranza: 76
@TuttoElezioni
#PaesiBassi🇳🇱
#Parlamentari
Risultati finali.
Voti scrutinati: 100%.
Affluenza finale: 78,4% (+0,05%).
🟩 Democratici 66 (#D66|RE): 16,9%
⬛️ Partito per la Libertà (#PVV|PfE): 16,7%
🟦 Partito Popolare per la Libertà e la Democrazia (#VVD|RE): 14,2%
🟥 Sinistra Verde - Partito del Lavoro (#GLPvdA|G/EFA|S&D): 12,6%
🟩 Appello Cristiano-Democratico (#CDA|PPE): 11,8%
⬛️ Risposta Corretta 2021 (#JA21|ECR): 5,9%
🟥 Forum per la Democrazia (#FvD|ESN): 4,6%
🟩 Movimento Civico-Contadino (#BBB|PPE): 2,7%
🟦#DENK|Minoranze etniche: 2,4%
🟧 Partito Politico Riformato (#SGP|ECR): 2,3%
🟩 Partito per gli Animali (#PvdD|LEFT): 2,1%
Altri: 7,8%
@TuttoElezioni
#PaesiBassi🇳🇱
#Parlamentari
Risultati parziali.
Voti scrutinati: 98,6%.
🟩 Democratici 66 (#D66|RE): 16,7%
⬛️ Partito per la Libertà (#PVV|PfE): 16,7%
🟦 Partito Popolare per la Libertà e la Democrazia (#VVD|RE): 14,1%
🟥 Sinistra Verde - Partito del Lavoro (#GLPvdA|G/EFA|S&D): 12,5%
🟩 Appello Cristiano-Democratico (#CDA|PPE): 11,7%
⬛️ Risposta Corretta 2021 (#JA21|ECR): 5,9%
🟥 Forum per la Democrazia (#FvD|ESN): 4,5%
🟩 Movimento Civico-Contadino (#BBB|PPE): 2,6%
🟦#DENK|Minoranze etniche: 2,4%
🟧 Partito Politico Riformato (#SGP|ECR): 2,3%
🟩 Partito per gli Animali (#PvdD|LEFT): 2,0%
Altri: 8,6%
@TuttoElezioni
#Sondaggi
#PaesiBassi🇳🇱
#Parlamentari
Sondaggio di Ipsos I&O.
Data: 23-24 ottobre 2025.
Campione: 2.745 persone.
⬛️ Partito per la Libertà (#PVV|PfE): 16,7%
🟥 Sinistra Verde - Partito del Lavoro (#GLPvdA|G/EFA|S&D): 15%
🟩 Democratici 66 (#D66|RE): 14,4%
🟩 Appello Cristiano-Democratico (#CDA|PPE): 12,6%
🟦 Partito Popolare per la Libertà e la Democrazia (#VVD|RE): 10,4%
⬛️ Risposta Corretta 2021 (#JA21|ECR): 7,7%
🟥 Forum per la Democrazia (#FvD|ESN): 3,6%
🟩 Partito per gli Animali (#PvdD|LEFT): 3,0%
🟥 Partito Socialista (#SP|Sinistra): 2,8%
🟩 Movimento Civico-Contadino (#BBB|PPE): 2,7%
🟧 Partito Politico Riformato (#SGP|ECR): 2,5%
🟦#DENK|Minoranze etniche: 2,4%
🟦 Unione Cristiana (#CU|Cristiano-democratici): 2,2%
🟪 Volt Paesi Bassi (#Volt|G/EFA): 2,2%
Altri: 1,8%
@TuttoElezioni