Функция 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
🎡 Supreme Spin is about to get even better! 🚀
A new update is coming with bigger rewards 🎁 and an exciting twist: soon, you can use $SING to spin and win! 💎
This is your moment to shine — hold your $SING tight and get ready to aim for the top! Massive prizes await those who are prepared. 🔥
Stay tuned for more details coming soon. Let the spinning madness begin! 🎉
👉#SingSingTycoon#SupremeSpin#SingSingSDK
🚨 Exciting News!🚨
🎉The 1st RUBY Halving event is COMING!
🗓Halving Date: TBA
RUBY plays a crucial role in the SingSing ecosystem. As we progress, our halving events will strategically decrease RUBY supply, rewarding early supporters of the project.
👉 What to expect:
1️⃣50% reduction in RUBY emissions (after Halving point).
2️⃣Increased scarcity, leading to potential value growth.
3️⃣Enhanced economic stability within the SingSing ecosystem.
Prepare for the change and maximize your RUBY holdings! 🌟
#RUBYHalving#SingSingSDK#Event
🎉 Supreme Spin is officially LIVE!
🔥 Get ready for massive rewards and a shot at winning TON right at your fingertips! 💎💰 Don’t miss out—spin now for a chance to grab these incredible prizes! 🎯
#SupremeSpin#TONRewards#SingSingSDK
🎤Announcement | Chat | X (Twitter) | Website | Game
We're thrilled to unveil our latest innovation that's set to revolutionize the Telegram mini-app ecosystem - SingSing SocialFi SDK.
🛠 Our Developer-Friendly SDK brings powerful social and financial features to developers and users alike with:
✅Seamlessly integrate SingSing's features into your Telegram mini-apps
✅Enhance user engagement and monetization opportunities
✅Leverage SingSing club system
✅Use SingSing payment system
🔒 Our SDK is currently being refined with our early partners to ensure a seamless experience. Stay tuned for the public release!
Read more and open treasure at: X Post
#SingSingSDK#TelegramMiniApps#Web3Gaming#SocialFi
🎉 Exciting Partnership Announcement
We're thrilled to introduce our first official partner for the SingSing SocialFi SDK: Cowtopia🐮!
Cowtopia, an innovative farming simulation game, will be the first to integrate our powerful SocialFi SDK. This collaboration marks a significant milestone as we prepare to revolutionize the Telegram mini-app ecosystem.
Stay tuned and see how Cowtopia will utilize our SDK to create an immersive and socially connected gaming experience.
Read more and open treasure at: X Post
#SingSingSDK#Cowtopia#TelegramGaming#SocialFi#FarmingSimulator#ComingSoon