Функция 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
ОФИЦИАЛЬНЫЙ МЕРЧ DUET NIGHT ABYSS
НАВИГАЦИОННЫЙ ПОСТ 💎
🦋АССОРТИМЕНТ🦋
▼ Серия "Глаз песка времени"🩵👤👤👤
▼ Раскладной шикиши "Летающие стихи"🩵👤👤👤
▼ Серия "Камень времени"🩵👤
▼ Коврик для мыши "Поток Ваньхуа"🩵👤
▼ Картхолдер с🩵👤
▼ Деревянный магнит "Песнь Великого ветра"🩵👤
▼ Кружка "Снег приветствует весну"💎
▼ Металлический кулон с👤
▼ Маска для сна с👤
▼ Складной ящик для хранения "Чудо-подарочная коробка"☕️
— Все ещё в продаже:
▼ Серия "Мягкий воин"👤👤👤
— Отзывы магазина:
💎Отзывы
#DuetNightAbyss@astroknightshop
СКЛАДНОЙ ЯЩИК ДЛЯ ХРАНЕНИЯ «ЧУДО-ПОДАРОЧНАЯ КОРОБКА» | ОФИЦИАЛЬНЫЙ МЕРЧ | DUET NIGHT ABYSS
🦋Детали:
⭐Товарможет быть РАСПРОДАН
⭐ Предпродажа, через 90 дней отправка на склад в Китае
⭐Размер: 380х250х250 мм
⭐Материалы: ткань Оксфорд
⭐ Возможно, что ящик окажется тяжелым, поэтому доставка может выйти по цене самого ящика
💎Цена: 1300 💰 (рублей)
💀Доставка:
🅰️ Цена указана БЕЗ УЧЕТА доставки ДО РФ
💬Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💎Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
#DuetNightAbyss@astroknightshop
КРУЖКА «СНЕГ ПРИВЕТСТВУЕТ ВЕСНУ» | ОФИЦИАЛЬНЫЙ МЕРЧ | DUET NIGHT ABYSS
🦋Детали:
⭐Товарможет быть РАСПРОДАН
⭐ Предпродажа, через 90 дней отправка на склад в Китае
⭐Размер: кружка 90 мм; костер 100 мм
⭐ Костер идет в комплекте
💎Цена: 2150 💰 (рублей)
💀Доставка:
🅰️ Цена указана С УЧЕТОМ доставки ДО РФ
💬Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💎Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
#DuetNightAbyss@astroknightshop
МАСКА ДЛЯ СНА С РИТМ | ОФИЦИАЛЬНЫЙ МЕРЧ | DUET NIGHT ABYSS
👤Персонажи:
👤 Ритм
🦋Детали:
⭐Товарможет быть РАСПРОДАН
⭐ Предпродажа, через 90 дней отправка на склад в Китае
⭐Размер: 110х210 мм
⭐Материалы: мягкий кристалл
💎Цена: 1200 💰 (рублей)
💀Доставка:
🅰️ Цена указана С УЧЕТОМ доставки ДО РФ
💬Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💎Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
#DuetNightAbyss@astroknightshop
#Ритм@astroknightshop
МЕТАЛЛИЧЕСКИЙ КУЛОН С РИТМ | ОФИЦИАЛЬНЫЙ МЕРЧ | DUET NIGHT ABYSS
👤Персонажи:
👤 Ритм
🦋Детали:
⭐Товарможет быть РАСПРОДАН
⭐ Предпродажа, через 90 дней отправка на склад в Китае
⭐Размер: 300х500 мм
💎Цена: 1350 💰 (рублей)
💀Доставка:
🅰️ Цена указана С УЧЕТОМ доставки ДО РФ
💬Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💎Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
#DuetNightAbyss@astroknightshop
#Ритм@astroknightshop
ДЕРЕВЯННЫЙ МАГНИТ «ПЕСНЬ ВЕЛИКОГО ВЕТРА» | ОФИЦИАЛЬНЫЙ МЕРЧ | DUET NIGHT ABYSS
👤Персонажи:
🩵 Фушу
👤 Чжилю
🦋Детали:
⭐Товарможет быть РАСПРОДАН
⭐ Предпродажа, через 90 дней отправка на склад в Китае
⭐Размер: 67х100 мм
💎Цена: 850 💰 (рублей)
💀Доставка:
🅰️ Цена указана С УЧЕТОМ доставки ДО РФ
💬Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💎Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
#DuetNightAbyss@astroknightshop
#Фушу@astroknightshop
#Чжилю@astroknightshop
КАРТХОЛДЕР С ПЕРСОНАЖАМИ | ОФИЦИАЛЬНЫЙ МЕРЧ | DUET NIGHT ABYSS
👤Персонажи:
🩵 Фушу
👤 Чжилю
🦋Детали:
⭐Товарможет быть РАСПРОДАН
⭐ Предпродажа, через 90 дней отправка на склад в Китае
⭐Размер: 70х105 мм
💎Цена: 1100 💰 (рублей)
💀Доставка:
🅰️ Цена указана С УЧЕТОМ доставки ДО РФ
💬Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💎Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
#DuetNightAbyss@astroknightshop
#Фушу@astroknightshop
#Чжилю@astroknightshop
КОВРИК ДЛЯ МЫШИ «ПОТОК ВАНЬХУА» | ОФИЦИАЛЬНЫЙ МЕРЧ | DUET NIGHT ABYSS
👤Персонажи:
🩵 Фушу
👤 Чжилю
🦋Детали:
⭐Товарможет быть РАСПРОДАН
⭐ Предпродажа, через 90 дней отправка на склад в Китае
⭐Размер: 700х300 мм
💎Цена: 1800 💰 (рублей)
💀Доставка:
🅰️ Цена указана С УЧЕТОМ доставки ДО РФ
💬Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💎Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
#DuetNightAbyss@astroknightshop
#Фушу@astroknightshop
#Чжилю@astroknightshop
ТОВАРЫ С ПЕРСОНАЖАМИ ИЗ СЕРИИ «КАМЕНЬ ВРЕМЕНИ» | ОФИЦИАЛЬНЫЙ МЕРЧ | DUET NIGHT ABYSS
👤Персонажи:
🩵 Фушу
👤 Чжилю
🦋Ассортимент и детали:
⭐Товарможет быть РАСПРОДАН
⭐ Предпродажа, через 90 дней отправка на склад в Китае
📌Металлический значок
⭐Размер: 58 мм
⭐Цена: 600 💰 (рублей)
📌Акриловый брелок
⭐Размер: 49х100 мм
⭐Цена: 1000 💰 (рублей)
📌Акриловый стенд
⭐Размер:🩵 стенд 169х55 мм, персонаж 86х162 мм; 👤 стенд 169х55 мм, персонаж 117х189 мм
⭐Цена: 1300 💰 (рублей)
💀Доставка:
🅰️ Цена указана С УЧЕТОМ доставки ДО РФ
💬Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💎Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
#DuetNightAbyss@astroknightshop
#Фушу@astroknightshop
#Чжилю@astroknightshop
РАСКЛАДНОЙ ШИКИШИ С ПЕРСОНАЖАМИ ИЗ СЕРИИ «ЛЕТАЮЩИЕ СТИХИ» | ОФИЦИАЛЬНЫЙ МЕРЧ | DUET NIGHT ABYSS
👤Персонажи:
🩵 Фушу
👤 Чжилю
👤 Ритм
🖤 Линн
🦋Детали:
⭐Товарможет быть РАСПРОДАН
⭐ Предпродажа, через 90 дней отправка на склад в Китае
⭐Размер: 334х206 мм (в разложенном виде); 206х164 мм (в собранном виде)
💎Цена: 1400 💰 (рублей)
💀Доставка:
🅰️ Цена указана С УЧЕТОМ доставки ДО РФ
💬Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💎Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
#DuetNightAbyss@astroknightshop
#Фушу@astroknightshop
#Чжилю@astroknightshop
#Ритм@astroknightshop
#Линн@astroknightshop
МЕТАЛЛИЧЕСКИЙ ЗНАЧОК ИЗ СЕРИИ «ГЛАЗ ПЕСКА ВРЕМЕНИ» | ОФИЦИАЛЬНЫЙ МЕРЧ | DUET NIGHT ABYSS
👤Персонажи:
🩵 Фушу
👤 Чжилю
👤 Ритм
👤 Лисбелл
🦋Детали:
⭐Товарможет быть РАСПРОДАН
⭐ Предпродажа, через 90 дней отправка на склад в Китае
⭐Размер: 65 мм
💎Цена: 650 💰 (рублей)
💀Доставка:
🅰️ Цена указана С УЧЕТОМ доставки ДО РФ
💬Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💎Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
#DuetNightAbyss@astroknightshop
#Фушу@astroknightshop
#Чжилю@astroknightshop
#Ритм@astroknightshop
#Лисбелл@astroknightshop