Функция 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
⚙️🩷 Устала рисовать работу и переключилась на картинку для себя (да, художники так делают, отдыхают от рисования, рисуя 🤷🏼♀️).
Домучиваю этот ваш Аркейн, добралась до 2го сезона, вроде наконец пошло полегче и с интересом. Сквозь начало продиралась с большим трудом, недоумевая откуда столько восторгов, я же себе чуть челюсть зевотой не вывихнула.. Но возможно это потому, что у меня сейчас менталОчка в режиме апатичного говна и вообще ничего особо заходит.
Маленькую Паудер нахожу невероятно бесечей и вызывающей ноль сочувствия, настолько, что её взрослый образ лишён всякого очарования, при всей моей нежной любви к ебанашкам.
А вот Вай - охуенная! Как говорится: I really need such a woman in my life. Нет серьёзно, я кажется влюбилась. Скажите мне, что у них с Кексиком всё будет хорошо!? Хотя ничего не говорите - в пекло спойлеры.
#Vi#Arcane#скетч
💕🤛🏻🧁 Do you wanna come play?
Как я начинала рисовать Вай пока смотрела 1й сезон и как закончила, досмотрев 2й..
Если чо, это Джинкс отобрала у меня руль от головного мозга вместе с планшетом, я как будто бы не причём🃏
#Vi#Arcane#Вай#fanart