Функция 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
💥#Example of Full Liquidation on Aqua Protocol
Triggering Liquidation: When the overall liquidation mode is activated.
Initial Setup:
• TON Value: 1 TON = $2.14
• Alice's Deposit: 1,000 TON, valued at about $2,140
• Minted AquaUSD: Alice mints 1,050 AquaUSD
• Initial Collateral Ratio (CR): ~203.81% (calculated as ($2,140 / $1,050) * 100%)
🔻Price Drop:
• New TON Price: Falls to $1.30
• Time Open: Position has been open for one year
• Accrued Borrowing Rate: 0.5% per year
• Borrowing Fee: Alice owes 5.25 AquaUSD for borrowing
Updated Values:
• Updated Collateral Value: 1,000 TON is now worth $1,300 (1,000 * $1.30)
• Updated CR: ~123% (calculated as ($1,300 / (1,050 AquaUSD + 5.25 AquaUSD)) * 100%)
⚖️Liquidation Calculation:
• Since CR < 125%, Alice’s position is eligible for full liquidation, allowing 1,050 AquaUSD to be liquidated.
🔄Liquidation Process:
• Bob's Action: Bob fully liquidates Alice’s position by repaying 1,050 AquaUSD.
• Borrowing Fees: 0.5% of 1,050 AquaUSD equals 4 TON ($5.25), paid to the Aqua Protocol treasury.
• Repayment Fee: Since the amount is over $1,000, a 0.5% fee applies, which is another 4 TON ($5.25), also paid to the treasury.
• Keeper Fee: Cathy, the Keeper, earns a 3% fee, totaling 24 TON ($31.50).
• Liquidator Fee: Bob receives the remaining collateral, totaling 968 TON (1,000 - 4 - 4 - 24), worth $1,258—a profit of 19.8%.
📊Post-Liquidation Status:
• Alice's Remaining Debt: Fully cleared to 0 AquaUSD
• Remaining Collateral: Fully liquidated to 0 TON
As a result, Bob earns a 19.8% premium for successfully executing the liquidation, with 3% of the reward going to the Keeper.
By participating in Aqua Protocol as a liquidator, redemption provider, or Keeper, you can help maintain the stability of AquaUSD and protect the system. Always remember the importance of a healthy collateral ratio to reduce the risk of liquidation and maximize rewards within the protocol!
💡#Example of Partial Liquidation on Aqua Protocol
Initial Setup:
• Value of TON: 1 TON = $2.14
• Alice's Deposit: 1,000 TON, worth about $2,140
• Minted AquaUSD: Alice mints 1,050 AquaUSD
• Initial Collateral Ratio (CR): ~203.81% (calculated as ($2,140 / $1,050) * 100%)
🔻Price Drop:
• New TON Price: The price drops to $1.47
• Time Open: The position has been open for one year
• Accrued Borrowing Rate: 0.5% per year
• Borrowing Fee: Alice owes 5.25 AquaUSD for borrowing
Updated Values:
• New Collateral Value: 1,000 TON is now worth $1,470 (1,000 * $1.47)
• Updated CR: ~139% (calculated as ($1,470 / (1,050 AquaUSD + 5.25 AquaUSD)) * 100%)
⚖️Liquidation Calculation:
• Maximum Liquidation Amount: The system allows up to $645 of Alice’s AquaUSD to be liquidated to maintain a safe collateral ratio.
🔄Liquidation Process:
• Bob's Action: Bob repays 645 AquaUSD to partially liquidate Alice’s position.
• Collateral Received by Bob: He gets $703 back, equivalent to about 478 TON (645 AquaUSD * 1.09).
• Keeper’s Reward (Cathy): Cathy earns $19.35 for assisting with the liquidation (3% of 645 AquaUSD).
📊Post-Liquidation Status:
• Alice's Remaining Debt: After the liquidation, Alice owes 405 AquaUSD (1,050 - 645).
• Repayment Fee: Alice pays a 0.5% fee on the 645 AquaUSD, totaling 3.26 AquaUSD.
• Total Fees Charged: Including borrowing fees, Alice pays back a total of approximately 5.8 TON.
• Remaining Collateral: Alice has 503.2 TON left after the liquidation (1,000 - 5.8 - 478 - 13 TON).
• Updated CR: Her new collateral ratio is about 183% (calculated as ($740 / 405 AquaUSD) * 100%).
This example illustrates the Aqua Protocol’s partial liquidation process, helping maintain a safe collateral ratio during market fluctuations. Keeping a healthy CR minimizes liquidation risks and maximizes your collateral protection.
@pic
Qué puede hacer este bot?
Este bot puede ayudarle a encontrar y compartir imágenes. Funciona automáticamente, sin necesidad de agregarlo en cualquier lugar. Simplemente abra cualquiera de sus chats y escriba @pic something en el campo de mensaje. A continuación, pulse sobre un resultado para enviar.
Idioma: Inglés
(visto en @BotsGram_cu)
#share, #result, #example, #funny, #message, #pic, #images