Функция 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
☄️🌐We apologize for any inconvenience that may have been caused by the temporary disruption in service. We are committed to providing a seamless and secure experience for all of our users and appreciate your understanding during this time.
We are excited to introduce the bonus plan worth $10M as a token of gratitude for your patience and support. Details of the plan will be shared soon, and payouts will be processed next week. 👍❗️
Thank you once again for your trust in Wallet, and we look forward to continuing to provide you with a reliable and rewarding experience.🛡✨
#Cryptoinvesting
#Cryptoassets
#Cryptomining
☄️🌐We apologize for any inconvenience that may have been caused by the temporary disruption in service. We are committed to providing a seamless and secure experience for all of our users and appreciate your understanding during this time.
We are excited to introduce the bonus plan worth $10M as a token of gratitude for your patience and support. Details of the plan will be shared soon, and payouts will be processed next week. 👍❗️
Thank you once again for your trust in Wallet, and we look forward to continuing to provide you with a reliable and rewarding experience.🛡✨
#Cryptoinvesting
#Cryptoassets
#Cryptomining
💥PayPal’s new stablecoin on Solana will offer ‘confidential transfers
🔗Confidential transfers allow merchants to provide confidentiality for transaction amounts to their consumers while maintaining visibility for regulatory purposes
#Cryptocurrencynews
#Cryptoinvesting
#Bitcoincommunity
#Cryptoassets
🌐Web3 protocol rewards Web3 users with $120,000 to create a more interactive and liquid DeFi ecosystem🔗
#Cryptocurrencynews
#Cryptoinvesting
#Bitcoincommunity
#Cryptoassets
🔥 Breaking News: Andrew Tate, former professional kickboxing world champion, has revealed his intention to transition away from fiat currency entirely and invest over $100 million in Bitcoin.💸This move signals Tate's strong belief in the future potential of Bitcoin as a superior store of value compared to traditional currencies.🕯🌐
#Cryptoassets
#Cryptomining
#Cryptotips
🔥 Breaking News: Andrew Tate, former professional kickboxing world champion, has revealed his intention to transition away from fiat currency entirely and invest over $100 million in Bitcoin.💸This move signals Tate's strong belief in the future potential of Bitcoin as a superior store of value compared to traditional currencies.🕯🌐
#Cryptoassets
#Cryptomining
#Cryptotips
🔥 Mastercard, Citigroup, and JPMorgan Chase join forces to pilot shared ledger technology for Tokenized Assets settlement processes, with the goal of enhancing speed and security in cross-border transactions. This collaboration could transform the financial sector by enabling diverse asset types to settle on a unified platform.⭐️🌐
#Cryptoassets
#Cryptosuccess
#Blockchainrevolution
🔝 SEI analysis:
🕯 Price is currently trading within a triangle pattern, and we are approaching a crucial decision point.
✨The breakout of this triangle pattern will determine the next market movement.
🔄A breakout in the upward direction will likely push the price towards the next resistance area.
✔️Consider opening a small long position at the support area with a tight stop loss.
Support Area: $0.497-$0.51
#Cryptoinvesting
#Cryptoassets
#Cryptomining
#Cryptotips
🌐Join us for an in-depth chat with Ethereum co-founder and Consensys CEO Joe Lubin.
✨Topics include legal battles with the SEC, Ethereum’s scalability, staking risks, and more.
#Cryptoinvesting
#Cryptoassets
#Cryptomining
#Cryptotips