Функция 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
🔥 Breaking News: We just burned over 1,000,000 $SING tokens!
This move reinforces our commitment to boosting $SING's valuealongside the groundbreaking innovations we're building for the SingSing community. 🚀
🔮 Here's a sneak peek: Revolutionary AI coming to SingSing will forever change the face of gaming. Stay tuned!
Check out burning details: https://bscscan.com/tx/0x46ec5084869ae42ca73c1769deaba4fa952c5f790338be54ad415102b3a05c51
#SingSingAI#TokenBurn#NextGenGaming#BlockchainInnovation
🤑Exciting News from Mappasaurus!
🤑
🔥 We are thrilled to announce a strategic partnership with #Bitgert, a leader in blockchain efficiency!
🦖#Mappasaurus is revolutionizing the mapping landscape with AI-driven and decentralized technology. Partnering with Bitgert enhances our mission to provide innovative, real-time mapping solutions with a focus on accessibility and privacy.
💸#Bitgert stands out with its low gas fee blockchain, perfectly aligning with our goals to enhance scalability and cost efficiency for our users.
💯#BlockchainInnovation#MappingRevolution#CryptoCommunity
Evolve Token Sale – Limited Time Offer!
The future of tokenized assets, private lending pools, and global trading is here! 🌍💰
🔥 Exclusive Offer: 100% Deposit Match for 48 Hours! 🔥
✅ Buy with BNB or SOL
✅ Instantly double your tokens!
✅ Secure your spot in the next wave of DeFi innovation!
⏳ Time is running out! Don’t miss this high-growth opportunity!
👉 Buy Now: buy.evolvetoken.io
#EvolveToken#CryptoSale#DeFiRevolution#BlockchainInnovation
🔒🌐 Commodity Proof of Reserves - Trusted, Public, and Secure Storage
We are thrilled to unveil Commodity Proof of Reserves, an innovative solution that ensures unwavering trust, transparency, and security in commodity storage.
Through our strategic partnership with a globally renowned mining company, in collaboration with SLEX, we guarantee a steady supply of liquidity and a secure trading environment. Our collaboration ets the highest standards of reliability and integrity.
Our mining operations cover multiple cities in the Democratic Republic of Congo (DRC): Lubumbashi, Kakanda, and Likasi. This extensive network taps into abundant resources, providing an impressive $3 billion USD supply 📝
We understand the critical importance of trustworthy storage and protection in today's dynamic market. Through advanced blockchain technology, we've created a system that ensures complete transparency and validation of reserves. This approach instills confidence in our valued clients and partners.
Commodity Proof of Reserves is a testament to our commitment to innovation, security, and reliability. With our trusted partner and vast resources, we aim to reshape commodity trading, setting new standards for excellence 📌
👉🏻 Join us Now and Stay Tuned For Updates and Developments: Slex.io
#CommodityProofOfReserves#TrustedStorage#SecureTrading#BlockchainInnovation
⚡️𝗣𝗮𝗿𝘁𝗻𝗲𝗿𝘀𝗵𝗶𝗽 𝗔𝗻𝗻𝗼𝘂𝗻𝗰𝗲𝗺𝗲𝗻𝘁 ⚡️
ᶜʳʸᵖᵗᵒ ¹⁰⁰ˣ ⱽ ᴹᵃʳˢᵒ ᵒⁿ ᴱᵀᴴ ⁽ ᴮᵃˢᵉ ⁾🔹
Marso Token: The Next BIG Thing in Crypto is Here! 🔥🔥🔥
🚀 The new BIG thing in the crypto market is here: Marso Token is launching, and it’s coming in HOT! Ready to soar, Marso Token is set to redefine possibilities in the crypto universe. 🫡🫡🫡 Join our journey, follow all our socials, stay tuned for the latest updates, and don’t miss your chance to invest early! ⭐️⭐️⭐️⭐️⭐️
🤑🤑🤑 Get in on the action now—exclusively on BitMart! Let’s make history together with Marso Token. 🥰🥰🥰
🤩🤩🤩🤩 Join the Marso community for exciting news, contests, and more. This is only the beginning, and you’re invited to be part of it. 🤟🤟🤟
✅Website: marso.tech
✅Telegram: https://t.me/MarsoUniverseCommunity
🚀X: https://x.com/marsouniverse?s=21
📱Instagram: https://www.instagram.com/marsouniverse?igsh=ZjR4cW5vZXVpdmMy&utm_source=qr
#MarsoToken#CryptoLaunch#BiggestCrypto#InvestNow#CryptoCommunity#Bitmart#MarsoUniverse#AltcoinSeason#CryptoFuture#BlockchainInnovation#EarlyInvestors#CryptoBuzz#NextBigCoin#FutureOfFinance#MarsoToTheMoon