Функция 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
Massive Bitcoin Transfer Triggers Attention
🚨 1,080 #BTC (valued at approximately $112.59M) have been transferred between unknown wallets, raising eyebrows in the crypto community. For details, visit Whale Alert's link.
#BTC#WhaleAlert#Crypto
Massive Bitcoin Transfer Alert
🚨 999 #BTC (valued at $101,477,799) transferred between unknown wallets. For details, see the Whale Alert.
#BTC#WhaleAlert#Crypto
Major Ethereum Transfer to Coinbase
🚨 A significant transfer of 13,758 #ETH (valued at $50.5M) recently occurred from an unknown wallet to Coinbase Institutional, according to Whale Alert. More details can be found here.
#ETH#Coinbase#Crypto#WhaleAlert
Major BTC Transfer Alert
🚨 A significant transfer of 2,400 #BTC (approx. $226.46M) occurred from #Coinbase to an unknown wallet, detected by Whale Alert.
💵 Additionally, 50,000,000 #USDC (approx. $50.03M) has been minted at the USDC Treasury.
Details available here.
#BTC#Coinbase#USDC#WhaleAlert#Crypto
🚀 USDC Treasury Mints 250 Million USDC Without Stated Reason
A recent report from Whale Alert indicates that 250 million USDC has been minted at the USDC Treasury. According to NS3.AI, the report did not specify the reason behind this significant minting event. The lack of explanation has left market participants speculating about the potential implications for the cryptocurrency market.
#USDC#Treasury#Cryptocurrency#WhaleAlert#Minting#NS3AI#MarketSpeculation
Massive Transfers Alert from Bitfinex
🚨 Significant transactions reported by Whale Alert:
- 370,379,149 #USDT ($370.9M) moved from #Bitfinex to Tether Treasury.
- 30,000 #BTC ($2.8B) sent to an unknown new wallet.
#USDT#BTC#Bitfinex#WhaleAlert
Large ETH Transfer from Bitfinex
🚨 A substantial transfer of 20,000 ETH ($66.79M) has been made from #Bitfinex to an unknown wallet. More details available in the Whale Alert report. 🚨
#ETH#Bitfinex#Crypto#Market#Finance#Blockchain#WhaleAlert
Large Bitcoin Transfer Alert
A whopping 623 #BTC, valued at approximately 63.9 million USD, has been moved from #Antpool to an unidentified wallet. Details available at Whale Alert.
#BTC#WhaleAlert#Blockchain#Crypto