Функция 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
Un prete, colombiano di 45 anni, è stato accoltellato in centro a #Modena questa mattina, in via Castelmaraldo. Sull'episodio sono in corso le indagini dei carabinieri, che procedono per tentato omicidio. Il sacerdote, raggiunto da un fendente alla gola, dopo i primi soccorsi da parte dei passanti, è stato portato in ospedale dal 118 dove èstato sottoposto a intervento chirurgico. Non sarebbe in pericolo di vita. L'aggressore è in fuga e i militari dell'arma sono al lavoro per rintracciarlo. Sconosciuti al momento i motivi del gesto.
Dopo 555 anni, la #Bibbia di Borso d'Este torna in Vaticano. A conclusione della mostra ospitata dalla Biblioteca del #Senato e prima di tornare a #Modena, il "libro più bello del mondo" ha effettuato oggi una breve tappa nel Palazzo Apostolico, accompagnato dal Presidente del Senato Ignazio La Russa che, con il Segretario generale Federico Toniato e il direttore delle Gallerie Estensi Alessandra Necci, ha così voluto ringraziare personalmente Papa #LeoneXIV per la visita in Senato del 18 dicembre scorso.
Dopo Paolo II, Pio IX e Giovanni Paolo II, Papa Leone XIV è così il quarto Pontefice ad aver avuto nelle proprie mani l'originale. Ma è anche il primo Papa a riceverlo in Vaticano dopo 555 anni. L'opera fu infatti realizzata su commissione di Borso d'Este e da questi portata a Papa Paolo II nel 1471 in occasione del conferimento del titolo di Duca.
Il manoscritto è considerato il capolavoro assoluto dell'arte della miniatura. La realizzazione inizia nel 1455, proprio nell'anno in cui Gutenberg finisce di stampare le copie della sua Bibbia.
La mostra in Biblioteca era stata inaugurata il 14 novembre, organizzata in occasione del #Giubileo 2025 grazie alla collaborazione tra Senato della Repubblica, Presidenza del Consiglio dei Ministri, Ministero della Cultura, Gallerie Estensi, Commissario Straordinario di Governo per il Giubileo, Istituto dell'Enciclopedia Treccani e Dicastero per l'Evangelizzazione della Santa Sede.
La chiusura, inizialmente prevista per il 16 gennaio, era stata poi prorogata al 4 febbraio a seguito del grande interesse manifestato dai visitatori. La Bibbia di Borso d'Este torna ora alle Gallerie Estensi di Modena dove sarà eccezionalmente esposta al pubblico dal 7 al 9 febbraio, nella Sala Campori della Biblioteca Estense Universitaria, sua sede storica.