Функция 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
🔤🔤🔤🔤🔤🔤🔤
Заботливая 800-летняя жена!
The Helpful Fox Senko-san
Sewayaki Kitsune no Senko-san
👉Сегодня — Заботливая 800-летняя жена!
🥰 Сэнко — 800-летняя полубогиня-лиса, посланная из мира духов, чтобы избавить офиса-манaка Курото Накано от стресса и одиночества: она готовит, убирает и заботится о нём как о семье, возвращая радость в его монотонную жизнь.
📝#SenkoSan#Senko
👉SPCAVE
👈
😳Anime Arts |
❤️BOOST
❤️
#Sewayaki_Kitsune_No_Senko_San#SenkoSan#Senko#Сенко
День близится к концу но есть ещё одно поздравление для нашего великого ГА
От Galactix:
Уважаемый Социн, поздравляю с днём рождения, желаю чтоб ты наконец-то отдохнул, и твой кошачий хвост был ухожен и прилизан, удачи
> наш чат
> приваточка
> проголосуйте за группу
#Sewayaki_Kitsune_No_Senko_San#SenkoSan#Senko#Сенко
От Таканаши:
С днём рождения социн броу
Чтоб у тебя все по жизни было хорошо
Ну и чтоб хуй рос и бабки были
> наш чат
> приваточка
> проголосуйте за группу
#Sewayaki_Kitsune_No_Senko_San#SenkoSan#Senko#Сенко
От Луны:
Дорогой Аркадий!
Поздравляю тебя с днём рождения! Пусть в жизни всегда будет место для радости, успехов и новых достижений. Желаю крепкого здоровья, счастья и исполнения всех твоих желаний. Пусть рядом будут верные друзья, а каждый день приносит только положительные эмоции и улыбки.
> наш чат
> приваточка
> проголосуйте за группу
#Sewayaki_Kitsune_No_Senko_San#SenkoSan#Senko#Сенко
Ночь, 00:00 по мск. И хочу поздравить кое кого. А именно своего браточка
С днем рождения тебя Брат! Поздравляю тебя с твоим праздником. Ты стал ещё на год старше и ещё год прожил свою замечательную историю. Также как и наша Империя. За этот год произошло много интересного. Было много проблем, радостей, препятствий. Но весь этот год ты был не один. С тобой была наша команда и также был я, кто больше всех тебе помогает и разделяет как радости, так и невзгоды. Несмотря на то что сейчас тебе тяжело, все обязательно наладится. И все это время с тобой буду я. Твой друг и такой же брат. В общем желаю желаю тебе чтобы этот год прошёл без проблем и всё твои цели и планы были завершены и достигнуты.
PS: И кстати, я не один кто хочет сказать тебе пару добрых слов, но для этого тебе надо подождать и поглядывать в это место)
> наш чат
> приваточка
> проголосуйте за группу
Сбылось! Империя создаёт новый канал в котором будет публиковаться часть контента из приватки. (что то типа пробника)
#Sewayaki_Kitsune_No_Senko_San#SenkoSan#Senko#Сенко
> Канал уже есть ТУТ
> А если хотите ещё больше контента он давно тут
> наш чат
> приваточка
> проголосуйте за группу