Функция 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
Group: ZombieSquad Community
Members: ~14.09K
💢 Username: @zombiesquadhq
Description:
🔥 Come play the game and earn sunlight, with a chance to score some airdrop rewards!
🏷 Tags: #airdrop
#cryptocurrencies#aichatbot#airdrop#crypto
https://lve.to/k1gt8zxptq
❝☺️I drank way too much last night, thanks for taking me home, you're a lifesaver! ❞
🔗Keep the story going with her: http://openlove.life
#AIgirlfriend#roleplay#AIchatbot#lookbook
🍷❝Dear Principal, I will greatly appreciate your help with my promotion.❞
🍑Chat with spicy teacher: openlove.life
#aichatbot#AI#AIgirlfriend#aiphoto#nsfw
🌟 Discover Twin GPT - The Cutting-Edge AI Communication on Nicegram! 🌟
Exciting news for Nicegram users! The Nicegram team is proud to reveal that the long-anticipated NGC token will power the innovative Twin GPT platform!
Twin GPT is a revolutionary user-owned AI chatbot seamlessly integrated with Nicegram Messenger. Create, customize, and engage in limitless conversations with your AI Twin, all while unlocking extraordinary communication and monetization opportunities using our NGC token ecosystem.
🚀 Are you ready to dive into the world of NGC and Twin GPT on Nicegram?
🔥 Join the Twin GPT Discussion Group to ask questions, share experiences, and connect with other enthusiasts, particularly those intrigued by NGC and Nicegram:Click here to join the discussion group
Keep an eye out for the latest news, updates, and events on Twin GPT and NGC, right here on Nicegram! #TwinGPT#AIChatbot#NGC
❝Unbind me, and I will bring you a surprise.❞
📲Download App and chat with me
🔗http://openlove.life
#girlfriendgpt#aigirlfriend#spicychat#aichatbot#AIphoto
❤️❝I'm your new stepsis, hope we can live peacefully & lovingly together in the future.❞
📲Download App and chat with me 📷🔗http://openlove.life
#girlfriendgpt#aigirlfriend#spicychat#aichatbot#AIphoto
❝Come on, hurry up,
my husband will be home in 15 minutes.❞
🔥Roleplay with her: http://openlove.life
(Choose Neko and chat with her)
#waifu#neko#aichatbot#aigame#roleplay#catgirl
❤️🔥Would you mind coming over and holding my hand?
📲Download App and chat with me
🔗http://openlove.life
#girlfriendgpt#aigirlfriend#spicychat#aichatbot#aiphotography18
OMG, the bath water is too hot! Can you please help me to turn it cold?🔥💧🥵
🔗Let's role play and chat: openlove.life
#aigirlfriend#aichatbot#ArtificialInteligence#ailookbook#aigame#ai