Функция 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
Представь: ноутбук, который весит меньше килограмма. 🪶 ASUS Zenbook A14 — это про легкость, которую ты берешь с собой куда угодно. В кафе, в парк, в путешествие или просто на диван.
💻✨ С ним все становится проще: работать, творить, быть мобильным.
А куда бы ты взял такой? 👀
#AIPC#ASUS
✨ Zenbook S 14: ультратонкий (1,1 см!🪶) и мощный ИИ-ноутбук от ASUS с Copilot+! ✨
Высокотехнологичный дизайн, процессор Intel Core Ultra 7 (Series 2) 🚀, OLED-дисплей ASUS Lumina 3K 💎 и 4 динамика 🔊 — он станет незаменимым помощником в вашей динамичной жизни.
#ASUSZenbook#AIPC
💻 Пусть новая рабочая неделя будет такой же легкой и продуктивной, как наш ультралегкий ASUS Zenbook A14 (UX3407)!
💫 Желаем вам быть энергичными и вдохновленными! Какие у вас планы на ближайшие пять дней? 😊
#Zenbook#AIPC#ASUS
🎞 Киномарафон в выходные? Легко!
✨ ASUS Zenbook S 16 и его емкий аккумулятор позаботятся о том, чтобы ваш ноутбук не разрядился даже во время просмотра многосерийных фильмов!
Отключитесь от сети и смотрите кино там, где вам удобно! ⚡💻
#ASUSZenbook#AIPC#кино
Представьте себе ноутбук, который думает вместе с вами. 🤔
✨🚀 ASUS Zenbook S 16 с передовыми функциями ИИ и уникальной клавишей Copilot+ сделает вашу работу и повседневную жизнь проще и эффективнее.✨🚀
#ASUSZenbookS#AIPC#ИИ#Ноутбук#Технологии#Инновации
ASUS ExpertBook B3: Мощный бизнес-ноутбук с искусственным интеллектом! 💼⚡
Повышайте продуктивность без лишних усилий, благодаря интеллектуальной оптимизации работы, продвинутой системе безопасности и высокой производительности.
Работайте эффективно — в любое время и в любом месте!
#ASUS#ExpertBook#AIPC#AI#Продуктивность#Безопасность
🖤 ProArt P16 в стильном цвете Nano Black!
💻 Это элегантный и мощный ноутбук, который станет вашим верным спутником в любом творческом приключении, будь то работа в дикой природе или в городе.
#ASUS#ProArt#ProArtP16#Ноутбук#AIPC