Функция 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
#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
Пока в Германии идут переговоры по формированию коалиции в Австрии они подошли к концу. Это произошло спустя 150 дней после выборов.
Первоначально в коалиции Австрии должны были участвовать АНП, СДПА и НЕОС. Однако партиям не удалось договориться. Представители НЕОС заявили о своем выходе из коалиции. Камнем преткновения стали вопросы экономики и социальной политики. В связи с этим АНП начала переговоры с АПС. Однако Австрия, как и Германия, оказалась не готова к тому, что правые силы могут встать во главе страны. При этом на местном уровне АПС возглавляет правительства, например, в Штирии.
Новая правящая коалиция Австрии вернулась к изначальному формату: АНП, СДПА и НЕОС. Данная коалиции станет первой трехпартийной коалицией в истории Австрии. Стоит отметить, что партиями движут разные интересы и подходы. Это уже осложнило процесс формирования правительства. Окажется ли опыт австрийской трехпартийной коалиции более удачным, чем результаты их немецких предшественников, покажет время.
Вместе с тем еще сохраняется дискуссия о министерских постах. Как будут распределены должности, остается невыясненным. Однако предусмотрено по шесть портфелей для АНП и СДПА и два - для НЕОС. Кроме того, вероятно, будет семь государственных секретарей.
#Österreich#Wahlen#ÖVP#SPÖ#Neos
https://www.derstandard.at