Функция 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
Giuliano #Amato sulla Strage di Ustica: “Il Dc9 fu abbattuto da un missile francese. Macron chieda scusa. Era scattato un piano per colpire l'aereo sul quale volava Gheddafi ma il leader libico sfuggì alla trappola perché avvertito da Craxi”
@UltimoraPolitics
Intelligenza artificiale, Giuliano #Amato lascia la presidenza della commissione algoritmi dopo la conferenza stampa di ieri di Giorgia #Meloni: "È una commissione della presidenza del Consiglio, e visto che la mia nomina non risulta essere un’iniziativa della presidente del Consiglio lascio senz’altro l’incarico". Poi aggiunge una battuta, ridendo: "Peccato, ci perdono qualcosa...Ma a me semplificherà la vita"
@UltimoraPolitics
Strage di Ustica, Matteo #Salvini: "Giuliano #Amato ha rilasciato dichiarazioni di inaudita gravità: è assolutamente necessario capire se ci sono anche elementi concreti a sostegno delle sue parole. Visto il peso delle affermazioni di Amato e il suo ruolo rilevante all’epoca dei fatti, attendiamo commenti delle autorità francesi"
@UltimoraPolitics
Giuliano Amato ha lasciato la Commissione che presiedeva e che si occupa dei possibili impatti dell'intelligenza artificiale.
Tutti a fare polemica: la verità è che si tratta di una bellissima notizia perché era assolutamente inadeguato a ricoprire quel ruolo.
La mia al TG Plus di Cusano Italia TV
#amato#intelligenzaartificiale
https://www.youtube.com/watch?v=fU7YnKQbeyQ&ab_channel=SavinoBalzano
Strage di #Ustica, Giorgia #Meloni: "Quelle di #Amato sono parole importanti che meritano attenzione ma sono frutto di personali deduzioni. Premesso che nessun atto riguardante la tragedia del Dc9 è coperto da segreto di Stato, e che nel corso dei decenni è stato svolto dall’autorità giudiziaria e dalle Commissioni parlamentari di inchiesta un lungo lavoro, chiedo al presidente Amato di sapere se, oltre alle deduzioni, sia in possesso di elementi che permettano di tornare sulle conclusioni della magistratura e del Parlamento, e di metterli eventualmente a disposizione, perché il governo possa compiere tutti i passi eventuali e conseguenti"
@UltimoraPolitics
Il teologo francescano Paolo #Benanti è il nuovo Presidente della Commissione sull'Intelligenza Artificiale per l'informazione, dopo le dimissioni di Giuliano #Amato
Professore della Pontificia Università Gregoriana, Padre Benanti è l'unico italiano membro del Comitato AI delle Nazioni Unite
@UltimoraPolitics
Strage di #Ustica, fonti #Eliseo sulle scuse ai familiari delle vittime chieste a #Macron da Giuliano #Amato nell’intervista di oggi a Repubblica: “No comment”. (Adnkronos)
@UltimoraPolitics