Функция 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
#Elezioni#Austria#Primarie
L'errore tecnico dovrebbe trattarsi del fatto che, quando sono stati pubblicati i risultati del congresso dell'#SPÖ|S&D, i due candidato hanno ottenuto 595 voti, ma risulta che i votanti sono stati 596.
@OsservatorioEsteri
#Austria
#ÖVP|EPP, #SPÖ|S&D e #Neos|RE hanno finalizzato il contratto di governo e nelle prossime ore presenteranno il programma di governo comune. Il nuovo governo potrebbe giurare già lunedì.
@OsservatorioEsteri
#Austria
Dopo aver annunciato che le trattative di governo con l'#SPÖ|S&D sono fallite, il Cancelliere Karl #Nehammer (#ÖVP|EPP) ha annunciato che rassegnerà le dimissioni dalla sua carica e da Presidente del suo partito.
@OsservatorioEsteri
#Elezioni#Austria#Primarie
Capo della Commissione elettorale dell'#SPÖ|S&D Michaela Grubesa: "A causa di un errore tecnico, i voti sono stati assegnati in modo errato alla conferenza del partito. I voti dei due candidati sono stati invertiti. Andreas #Babler è quindi il nuovo leader del partito."
@OsservatorioEsteri
Пока в Германии идут переговоры по формированию коалиции в Австрии они подошли к концу. Это произошло спустя 150 дней после выборов.
Первоначально в коалиции Австрии должны были участвовать АНП, СДПА и НЕОС. Однако партиям не удалось договориться. Представители НЕОС заявили о своем выходе из коалиции. Камнем преткновения стали вопросы экономики и социальной политики. В связи с этим АНП начала переговоры с АПС. Однако Австрия, как и Германия, оказалась не готова к тому, что правые силы могут встать во главе страны. При этом на местном уровне АПС возглавляет правительства, например, в Штирии.
Новая правящая коалиция Австрии вернулась к изначальному формату: АНП, СДПА и НЕОС. Данная коалиции станет первой трехпартийной коалицией в истории Австрии. Стоит отметить, что партиями движут разные интересы и подходы. Это уже осложнило процесс формирования правительства. Окажется ли опыт австрийской трехпартийной коалиции более удачным, чем результаты их немецких предшественников, покажет время.
Вместе с тем еще сохраняется дискуссия о министерских постах. Как будут распределены должности, остается невыясненным. Однако предусмотрено по шесть портфелей для АНП и СДПА и два - для НЕОС. Кроме того, вероятно, будет семь государственных секретарей.
#Österreich#Wahlen#ÖVP#SPÖ#Neos
https://www.derstandard.at