Функция 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
Innei 向 mx-space/core 提交了一个更改
refactor: remove TextMacroService and textOptions config
TextMacroService (text macro replacement for `[[ $var ]]` / `[[ #fn() ]]` syntax)
is no longer needed. All replaceTextMacro calls replaced with direct text usage.
- Delete helper.macro.service.ts and its test/mock files
- Remove TextMacroService injection from post, page, note, markdown modules
- Remove textOptions schema, default config, and DSL section
- Update v10 migration docs with breaking change notice
#Italia#Camera
#FN|ESN ha negato per la seconda volta consecutiva la fiducia al governo Meloni. Il partito di Vannacci si colloca ufficialmente all’opposizione.
@Osservatorioitaliano
#Italia
Roberto #Vannacci (#FN|ESN): "L'immigrazione distrugge anche il calcio. La Serie A oggi è il campionato più ricco di stranieri in Europa: il 67,5% dei giocatori non è italiano, 384 su 569, una percentuale che supera perfino la Premier League. Questo modello orientato al business favorisce i club ma ‘svuota’ il vivaio nazionale: la Nazionale, infatti, può pescare solo da un bacino che rappresenta il 30% del campionato. Il risultato è una crisi strutturale, confermata dalla terza mancata qualificazione consecutiva ai Mondiali e da anni di mancati investimenti sui giovani. I club oggi vedono la maglia azzurra come un ‘fastidio’ che non produce ricavi e preferiscono acquistare giocatori stranieri già pronti, invece di far crescere talenti italiani."
@OsservatorioItaliano
#Italia#Marche
Il sindaco di Civitanova Marche Fabrizio Ciarapica lascia #FI|EPP e aderisce a #FN|ESN: è il primo sindaco “futurista” di un comune italiano superiore.
@Osservatorioitaliano
#Italia
Joe #Formaggio ufficializza il passaggio a #FN|ESN, abbandonando #FdI|ECR, e segnando il terzo passaggio importante in pochi giorni nel partito di Vannacci in Veneto. Poche ore dopo l’annuncio, un incendio ha danneggiato il ristorante di Formaggio.
@Osservatorioitaliano
#Italia
L’ex sottosegretario al lavoro del governo Berlusconi Luca #Belotti, con un passato tra i finiani, lascia #FdI|ECR e aderisce a #FN|ESN.
@OsservatorioItaliano
#Italia#Camera
❗Edoardo #Ziello (#FN|ESN) ha appena votato "NO" alla questione di fiducia al governo Meloni, passando ufficialmente all'opposizione.
@OsservatorioItaliano
#Italia#Camera
❗Rossano #Sasso (#FN|ESN) ha appena votato "NO" alla questione di fiducia al governo Meloni, passando ufficialmente all'opposizione.
@OsservatorioItaliano
#Italia
L'ex sottosegretaria alla Salute dal 2009 al 2011 durante il governo Berlusconi, Francesca #Martini, lascia la #Lega|PfE e aderisce a #FN|ESN.
@OsservatorioItaliano
#Italia#Camera
❗Emanuele #Pozzolo (#FN|ESN) ha appena votato "NO" alla questione di fiducia al governo Meloni, passando ufficialmente all'opposizione.
@OsservatorioItaliano
#Italia#Veneto
Vicenza, in città compaiono locandine per un evento di #FN|ESN organizzato dall’ex consigliere Joe #Formaggio, che sarebbe ad un passo dal lasciare #FdI|ECR per passare con Vannacci
@OsservatorioEsteri