Функция 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
Последние 5 футболок “United States of Siberia”
Оверсайз / кулирка / печать шелкография
Размеры М, Л, ХЛ, ХХЛ
1500₽
Последняя партия по такой цене
Заказать можно в лс или на сайте.
#bednotown#bednotownfactory#siberia#omsk#unitedstatesofsiberia
Делаем пробник обложки для паспорта с нашим новым принтом. Винил, ткань, ламинация, прошита по контуру. Печать с двух сторон.
Открываем предзаказ со скидкой на первые 50 штук.
Стоимость - 350₽ , после выпуска партии обложка будет стоить 550₽.
Примерная готовность на 04.07, тогда же и начнем высылать заказы.
Предзаказ можно будет оформить здесь в директе , или на нашем сайте.
#bednotown#bednotownfactory#omsk#siberia#damirmuratov#art#siberian#omsk55#омскстолицавселенной
Эскиз нового принта для наших изделий готов
Техника акварель / фломастеры
В скором времени конвертируем в цифру и сделаем предзаказ на футболки
Пишите в личку, если появятся вопросы или предложения
Всем мир ;)
#bednotown#bednotownfactory#omsk#omsk55#siberia#irtysh#damirmuratov#art#modernart#pacific#mountains#palms
Делаем скидку 20% на все флаги. До 1 июля.
Получается united states и united kingdom по 1200₽, а island of freedom - 1600₽.
Размеры все! (У нас много осталось размера 60-это 5хл, его вообще с супер скидкой отдадим)
Заказать можно в директе , или на сайте. При покупке от 2х штук - доп скидка (на сайте эта история тоже работает)
Кстати о способе оплаты - карты у нас на портале принимает система unitpay , если у кого возникают неувязки - дайте знать , пожалуйста. И лучше пишите в директ в таком случае.
Товар распродаем, потому что готовим новое. Всем отличного дня!
#bednotown#bednotownfactory#omsk#unitedstatesofsiberia#unitedkingdomofsiberia#siberiaislandoffreedom#art#siberia#damirmuratov#tshirts#merch#clothes#oversize
Футба «Бритва Омск»
100%хлопок/ классический фасон / печать шелкография
Размеры М-3ХЛ
1500₽
При покупке от 2х штук сделаем хорошую скидку!
В Омске в наличии в @lll.tochka
Заказ можно оформить в директе или на нашем сайте
Отличного дня!
#bednotown#bednotownfactory#omsk#siberia#damirmuratov#merch#print#бритваомск#омск#сибирь#панкрок#punkrock#egorletov
Мы регулярно печатаем футболки вручную через трафареты. Их лично отрисовывает и вырезает @bednotown , а потом мы вместе переносим рисунок на изделие. Футболки можно найти на сайте в разделе «Крафтовая коллекция». Также, обращайтесь в директ, если заинтересует какая позиция.
Печатаем мы акрилом по ткани - это надежно и крепко, да и сам продукт получается эксклюзивным и пропитанным теплотой рук.
Хочешь сделать хорошо - сделай это сам (с)
Хорошего дня, друзья!
#bednotown#bednotownfactory#handmade#tshirt#craft#craftcollection#damirmuratov#omsk#siberia#art#acrylicpainting#decola#sea#sealife#sealovers#exclusive#rarepicture#rare#trafaret#printing