Функция 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
🪙Big news coming this Friday!
Get ready to find out the official TGE date for MemeFi Stay tuned for the announcement!
👉Check out the tweet on X
🔔Subscribe👉Join MemeFi
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️
#MemeFi#TGE#CryptoUpdate
Crypto Market Update – Today
• BTC: ~$108K
• ETH: ~$3.8K
• SOL: ~$187
• TON: ~$2.98
With Bitcoin holding firm above the six-figure mark, Ethereum steady, Solana making moves, and Toncoin continuing as a notable altcoin — these are the major ones to keep on your radar.
🔍 Note: Prices update rapidly. Always verify live data and use proper risk management.
#crypto#bitcoin#ethereum#solana#toncoin#cryptoupdate
🌟 Exciting news! SingSing Mini App has launched Version 2! 🚀
Enjoy these amazing new feature:
🚨Claim RUBY: absolutely gas-free! 🎉 NO FEES, JUST RUBY!
⚠️ Remember, you only need to connect your wallet when minting tokens on-chain and you will soon be able to use RUBY in various games and projects within the SingSing ecosystem.
Also, a friendly reminder: Ruby token halving starts at 14:00 UTC. ⏰
Don't miss out on these upgrades and make the most of your SingSing experience!
#SingSingClub#RubyToken#CryptoUpdate
🌐Major News: BlackRock Grabs 11,500 #BTC Amid Market Dip.
BlackRock acquires a substantial 11,500 Bitcoin during the recent market dip after launching its spot Bitcoin ETF.
This acquisition is noteworthy, as it accounts for approximately 13 days' worth of #Bitcoin production, surpassing the daily issuance of 900 BTC.
#CryptoUpdate#BlackRock#BitcoinPurchase#CryptoSignals
-
Crypto GALAXY
🌐 Breaking News: BlackRock Secures 11,439 $BTC💰 Valued at Over $497 Million for Its Spot #Bitcoin ETF.
#BitcoinNews#BlackRock#CryptoETF#CryptoUpdate
-
Crypto GALAXY
🚨 SingSing Mini App Version 2 Update! 🚨
Here's what's new:
The RUBY in the "RUBY Balance" section is now off-chain RUBY, which you can claim completely gas-free! 🎉
1️⃣When you click the "Check Mission" button below the RUBY Balance Section, you'll see a "Mint" button. Hit "Mint" to convert your off-chain RUBY into on-chain RUBY. 🔄
2️⃣Scroll down to your Token List. The RUBY displayed here is your on-chain RUBY balance. After minting, your RUBY from the RUBY Balance section will move to this Token List balance. 💎
3️⃣With this new version, you can earn more RUBY with lower costs. Make the most of it and start stacking up RUBY for upcoming events with SingSing and our partners! 🚀
#SingSingClub#RUBYToken#CryptoUpdate#Version2