Функция 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
🇺🇸#USA2024 - È il giorno delle elezioni. Verrà eletto chi raggiungerà almeno 270 grandi elettori, ossia i delegati che ogni stato assegna (in base alla sua popolazione) a maggioranza semplice al candidato più votato. La situazione secondo i sondaggi è imprevedibile e verrà decisa, a meno di sorprese, in base ai risultati di 7 stati "in bilico".
Per tutte le notizie seguiteci su: @UltimoraPolitics24
@UltimoraPolitics
🇺🇸#USA2024 - Il presidente del Comitato nazionale democratico Jaime Harrison ha dichiarato in una nota che il partito "intraprenderà un processo trasparente e ordinato" per selezionare un candidato "che possa sconfiggere" l'ex presidente Trump a novembre.
@UltimoraPolitics
Usa2024: disastro Biden
🇺🇸 Leggi lo speciale #Usa2024: https://www.ispionline.it/it/pubblicazione/usa2024-disastro-biden-178901
🎙🇫🇷 Ascolta il nuovo episodio di Globally "La Francia al voto: è la volta buona per Le Pen?": https://www.youtube.com/watch?v=Hd9dY_O5xII
🇺🇸#USA2024 - Anche per AP #Trump vince in Pennsylvania. Elezione ad un passo, con Fox che lo ha già annunciato come presidente eletto.
@UltimoraPolitics
🇺🇸#USA2024 Joe #Biden presenta Zelensky alla convention NATO di Washington: “Ora il presidente dell’Ucraina che ha molto coraggio e determinazione: signore e signori, il presidente Putin”.
@UltimoraPolitics24
🇺🇸#USA2024 - Kamala #Harris: “Sono stata informata sui report di una sparatoria nei pressi dell'ex presidente Trump e della sua proprietà in Florida, e sono contenta che sia al sicuro. La violenza non ha posto in America.”
@UltimoraPolitics