Функция 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
Lookonchain | ꘜ
Whales keep accumulating $ETH!
Whale 0x3952 withdrew another 21,000 $ETH($90.6M) from #Binance in the past 40 minutes and currently holds 86,001 $ETH ($260M).
https://intel.arkm.com/explorer/address/0x3952D69643F7a87237C7fC8bB33f8453C0b45500
Lookonchain | ꘜ
Whale bc1q5r withdrew another 500 $BTC($59.53M) from #Binance 5 hours ago.
This whale has withdrawn 3,000 $BTC($355M) from #Binance over the past 3 months at an average price of $109,895.
https://intel.arkm.com/explorer/address/bc1q5rsc4uscnmemlwru8xsys26k3xgxewqfnf3k7j
Lookonchain | ꘜ
Three wallets (likely belonging to the same whale) unstaked 14,942 $ETH($64.38M) and deposited it into #Binance in the past hour.
https://intel.arkm.com/explorer/address/0x345834DA38A13Ba5B9F4dDD2288e0B98C662Fb95
https://intel.arkm.com/explorer/address/0xA55d99EEcc7d1D5D76829e71CdC9fdB387858CE5
https://intel.arkm.com/explorer/address/0xF2758d2d606ecE036601544606BE2Af61F6a12e1
Lookonchain | ꘜ
A wallet linked to Metalpha deposited 5,000 $ETH($20.91M) to #Binance just now.
https://intel.arkm.com/explorer/address/0x96F49d0e9724dFD8780fa667ac37A993f005CB94
Lookonchain | ꘜ
Whale 0x3952 withdrew another 8,745 $ETH($37.6M) from #Binance an hour ago.
Over the past two months, this whale has withdrawn 65,001 $ETH($281M) from #Binance at an average price of 2,611 — now sitting on over $111M in unrealized profits.
https://intel.arkm.com/explorer/address/0x3952D69643F7a87237C7fC8bB33f8453C0b45500
A whale deposited 689.34 $BTC worth $46.17M into #Binance.
https://intel.arkm.com/explorer/address/15HWQZaDQ6GFhro8x693zaqCdTU1qVKvdQ
https://x.com/OnchainLens/status/2039991271012679903
Follow @onchainlens for more onchain updates
Whale 0x2fcf withdrew 5,090 $BNB ($6.65M) from #Binance and spent 3,475 $BNB ($4.54M) aping into random memecoins.
He’s now sitting on an unrealized loss of ~$1.2M.
Even whales get rekt. 🐋