Функция 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
¡OFERTÓN! 🚨
Consigue el sérum ANUA Niacinamide 10 + TXA 4 para una #GlassSkin de ensueño por solo 20,00€ en Amazon. ✨
Reduce manchas, ilumina y mejora la textura de tu piel.
¡No dejes escapar este #chollo de #KBeauty! 🏃♀️💨
Enlace: https://amzn.to/4rIGcBc
Кореянки покорили нас не только своим качественным уходом за кожей, но и необычными дизайнами ногтей 💅
🌸 В Корее маникюр давно стал больше, чем просто уход. Это полноценное искусство, которое раскрывает индивидуальность и вдохновляет.
Сегодня я расскажу вам о самых ярких трендах корейского маникюра 🌸
#корейскийманикюр#корейскиетренды#kbeauty
🇰🇷 Подпишись:Лунный Свет Сеула
Хотите выглядеть как героиня корейской дорамы или K-pop айдол?
🤩
Тогда корейский макияж - это именно то, что вам нужно! 💄
🎀Техника «щенячьи глазки» (puppy eyes)
Вместо классических стрелок, направленных вверх, корейцы рисуют линии, слегка опущенные вниз. Эта техника делает взгляд выразительнее и визуально увеличивает глаза.
🎀Цветовая палитра
Персиковые, розовые, коралловые тени создают эффект лёгкого румянца на веках. Шиммерные текстуры добавляют блеска, а градиентные переходы придают глазам объём.
🎀Техника «aegyo sal»
Это создание искусственных «мешочков» под глазами с помощью хайлайтера и коричневых теней. Корейцы специально их рисуют, и это выглядит очень мило, создавая эффект детского лица.
🎀Естественное сияние кожи
Предпочтение отдаётся лёгкому тональному средству с сияющим финишем. Хайлайтер наносят на выступающие части лица, чтобы кожа сияла ещё сильнее.
🎀Акцентные румяна
Яркие оттенки наносят высоко на скулы и растушёвывают к вискам, чтобы создать эффект лифтинга.
🎀Градиентная техника
Визитная карточка корейского макияжа губ! Цвет наносят в центр и растушёвывают к краям, создавая эффект тающего мороженого. Так губы выглядят пухлее и получается естественный, аппетитный вид.
🎀Блеск
Блеск тоже важен. Корейцы любят глянцевые губы, но блеск должен быть не липким, а водянистым. Часто глоссы дают охлаждающий эффект и оставляют ощущение свежести на губах.
#КорейскийМакияж#KBeauty#Макияж#Тренды#Kpop
🇰🇷 Подпишись:Лунный Свет Сеула