Функция 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
🎁[New Loot] : Paytm First Application
Sign-up : 50₹ (Use Code)
Per Refer : 10₹
Link : https://firstgames.onelink.me/wElH/a4444f3f
Code Tap To Copy : elnfet068
🤑Instant Withdraw , [#Proof] Added , Don't Miss Loot Fast
❌Over Now Giving bonus only
Pannel station : Female Trick Earn Free Rs. 200 Paytm Cash (#Proof Added)
Link : bit.ly/3h1O7Wt
➠Steps To Get Rs.200 Cashback
•Enter Only Female Name
• Gender Only : Female
•Age : 18+
⚠️Important : Must Verify Gmail Id (Check Your Gmail Box)
Note : Cashback Within 24 Hours , Complete Very Easy Survey & Earn Money
🙊 “On.. went.. on..” – we are learning to distinguish swear words from terms from the crypto world!
Cryptocurrencies are an unusual and challenging market. Over the years, Cryptans have invented many words to describe what is happening around them. And we have compiled a dictionary of the most important of them for you:
➖#Wallets are a key vault for different cryptocurrencies. There is no crypt on the wallet itself, it is located in the blockchain and is assigned to your addresses. Wallets can be "cold" and "hot".
➖#DeFi – decentralized finance. Such crypto projects do not have a specific “manager” or “supervisor”. Interactions between users are managed by smart contracts.
➖#Smart contract - algorithms in the blockchain that control user actions and execute commands and conditions embedded in them.
➖#Proof-of-Work (POW, proof of work) is an algorithm for confirming transactions in the blockchain (achieving consensus) using the computing power of its participants (mining)
➖#Proof-of-Stake (POS, proof of stake) – all transactions in the blockchain are confirmed using cryptocurrency in the wallets of participants
➖#Staking – placement of POS-blockchain tokens in a wallet for a reward. The POS system needs coins to function. A more convenient and effective form is liquid staking.
➖#Gas – payment for transactions on the blockchain. When the activity on the network increases, so does the gas charge.
➖#Fork – updating/changing the blockchain: its technologies and rules
➖#Mixers are platforms that mix tokens of different users, hiding the history of transactions and previous owners.
➖#Bridges (cryptomostes, cross-chain bridges) is a service for transferring crypts from one blockchain to another. Without them, different blockchains and crypto projects cannot communicate with each other.
➖#NFT is a unique digital certificate confirming the ownership of a digital object: anything, but most often a song, a picture, an object from a game.
➖#Stablecoins are coins backed by reliable real assets (dollars, government bonds), and therefore stable in price: 1 to 1 with the dollar.
➖#Memcoins are often coins created “for fun". They are popular among speculators, but some coins “grow up” and try to create full-fledged projects.
➖#Profitability farming is earning money by providing your tokens for trading to other users in liquidity pools on a decentralized crypto exchange.
➖#Airdrop – free distribution of crypto project coins for user activity: try out the project, tell about it on social networks