Функция 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
🔠
🔠
🔠
🔠
🔠
🔠В новом году мы с вами еще не виделись, давайте исправлять!
У нас есть для вас 3 квеста!
1 - дожить до субботы, 2 и 3 - поволонтёрить на полезных мероприятиях
С утра в субботу предлагаем поучаствовать в подготовке компостных ям-траншей и прилегающей территории к последующему приему органики в Ботсаду, а днём в Ковчеге поиграть в сортировку крышечек по цветам на скорость!* И там, и там пригодится помощь 7-10 волонтёров
♻
* Мы вместе собрали очень много крышечек от пластиковых бутылоки теперь хотим сделать из этих крышечек красивую мозаику (#reuse) в одной из армянских школ. Дизайн мозаики разработает известный художник Арман Степанян. Для реализации нам необходимо рассортировать собранные крышечки по цвету
Ждем вас 21 января на одном или сразу двух мероприятиях!
🕚 11:00
📍 Ботанический сад, центральный вход, ул. Грачья Ачаряна
🛠 задачи: обрезка кустарников, перенос камней, уборка мусора
🕒 15:00
📍 ресурсный центр Ковчега, ул. Павстоса Бузанда 1/3
🛠 задача: сортировка пластиковых крышечек по цветам
Также просимподдержать нас, отправив пожертвование на комфортную сумму сюда
➡️
➡️
➡️
5471280030147752 (Ардшинбанк)
IVAN DIVILKOVSKIY
2200700168433976 (Тинькофф)
As we prepare for Christmas, let's transform and reuse our old decor for a fresh festive look.
Instead of buying new decorations, wrapping paper and cards, we can:
🎄 Paint a fresh coat on old ornaments
🎁 Reuse empty food jars or cookie tin cans as gift boxes
📱 Swap Christmas paper cards for heartfelt e-greetings
How are you getting creative with upcycling and recycling this Christmas? Share your tips in the comments below.
#TowardsZeroWaste#3Rs#Reduce#Reuse#Recycle
Our 2023 Wrapped is in!
'Bringing Your Reusable Bag for Shopping' is the chart-topping single we all need.
From reusable essentials to recycling mastery, we've built an eco-habit playlist that's pure chart green. Top tracks include 'Reusable Bag Groove', 'Recycling Rhythm', and 'Energy-Saving Melody'.
Fellow eco-warriors, let’s keep this #SustainableSG chart-topper habit going strong!
#TowardsZeroWaste#BYOB#BringYourOwnBag#BringYourOwn#BYO#3Rs#Reduce#Reuse#Recycle#EnergyEfficiency
Что это такое своп и шеринг группы («swap» и “sharing” в переводе с англ. “обмен”) ?
⠀
🍀это обмен ненужными, но хорошими вещами. Свопы проходят в виде фримаркета: вы приносите ненужную вам вещь, а забирайте нужную или вовсе ничего не забираете. Главный принцип свопа — никаких денег #nomoney
🍀 можно делиться информацией о ненужных вещах и договариваться об обмене в шеринг-группах или чатах в соцсетях.
⠀
⠀
🍀🍀🍀
#foodsharing#sharing#sobirator#собиратор#собиратормосква#своп#swap#свопмосква#обмен#медшеринг#шеринг#отдамдаром#отдамдароммосква#reuse#реюз#зоошеринг#zoosharing