Функция 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
International Jeweler's Day is a holiday celebrated on January 31st and dedicated to jewelry professionals.
Tiger's Eye is a striking golden-brown gemstone known for its silky luster and captivating chatoyancy ("cat's eye" effect). South Africa is one of the world's leading sources of this beautiful stone, especially in the Northern Cape region.
Fun fact: ancient Roman soldiers wore Tiger's Eye for protection in battle, believing it granted courage and strength. Today, it's popular in jewelry and as a good luck charm, symbolizing confidence and grounding energy.
#jewelry#minerals
🎥Video 1, Video 2
В нашей коллекции Вы найдете идеальное украшение для создания неповторимого образа на 1 сентября!
Загляните к нам на сайт rusremesla.ru/ или посетите наш ювелирный салон по адресу: г. Ярославль, ул. Малая октябрьская, д.6.
#серебро#украшения#1сентября#школа#мама#стиль#элегантность#аксессуары#мода#jewelry#silver#русскиеремесла#ярославль
Сияние, которое говорит без слов.
Замечали ли вы, как любимые украшения преображают женщину? Как скромное серебряное колечко становится талисманом, а изящная подвеска – символом самых сокровенных мечтаний?
Мы в Русских Ремеслах обожаем наблюдать за тем, как наши украшения обретают жизнь на своих прекрасных обладательницах.
А какое ваше любимое серебряное украшение и почему?
Напишите в комментариях фразу: "Моё любимое украшение – это…, потому что…"
Нам очень интересно узнать о ваших предпочтениях и создать для вас еще больше прекрасных украшений!
А если у вас еще нет любимого украшения или срочно нужно приобрести новое, загляните на наш сайт rusremesla.ru/.
#серебро#сперебряныеукрашения#стиль#мода#женственность#аксессуары#любимоеукрашение#серебряныеукрашения#jewelry#silver#русскиеремесла#ярославль#woman#accessories