Функция 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
📩#GALAUSDT 30m | Mid-Term
📉Long Entry Zone: 0.01628-0.01585
🎯 - Strategy Accuracy: 94.29%
Last 5 signals: 100.0%
Last 10 signals: 94.12%
Last 20 signals: 92.59%
⏳ - Signal details:
Target 1: 0.01646
Target 2: 0.01663
Target 3: 0.01681
Target 4: 0.01733
_____
🧲Trend-Line: 0.01585
❌Stop-Loss: 0.01567
💡After reaching the first target you can put the rest of the position to breakeven
📩#GALAUSDT 30m | Mid-Term
📉Long Entry Zone: 0.0166-0.0156
🎯 - Strategy Accuracy: 90.52%
Last 5 signals: 100.0%
Last 10 signals: 100.0%
Last 20 signals: 100.0%
⏳ - Signal details:
Target 1: 0.0168
Target 2: 0.0170
Target 3: 0.0172
Target 4: 0.0178
_____
🧲Trend-Line: 0.0156
❌Stop-Loss: 0.0154
💡After reaching the first target you can put the rest of the position to breakeven
📩#GALAUSDT 30m | Mid-Term
📉Long Entry Zone: 0.03608-0.03387
🎯Accuracy of this strategy - 90.50%
- ⏳ - Signal details:
Target 1: 0.03651
Target 2: 0.03695
Target 3: 0.03738
Target 4: 0.03868
_____
🧲Trend-Line: 0.03387
❌Stop-Loss: 0.03346
💡After reaching the first target you can put the rest of the position to breakeven
#GALAUSDT After the completion of the pattern, we see the breaking of the downward trend line, which can be considered to start the upward movement, but if the price is not supported, the range of 0.01692 - 0.01775 can be considered for support.
📩#GALAUSDT 30m | Mid-Term
📈Long Entry Zone: 0.00333-0.00323
🎯 - Strategy Accuracy: 87.82%
Last 5 signals: 90.0%
Last 10 signals: 75.0%
Last 20 signals: 75.0%
⏳ - Signal details:
Target 1: 0.00337
Target 2: 0.00340
Target 3: 0.00344
Target 4: 0.00355
_____
🧲Trend-Line: 0.00323
❌Stop-Loss: 0.00320
💡After reaching the first target you can put the rest of the position to breakeven
#ID20000037892
📩#GALAUSDT 30m | Mid-Term
📉Short Entry Zone: 0.00352-0.00377
🎯 - Strategy Accuracy: 92.33%
Last 5 signals: 90.0%
Last 10 signals: 90.0%
Last 20 signals: 90.0%
⏳ - Signal details:
Target 1: 0.00344
Target 2: 0.00336
Target 3: 0.00329
Target 4: 0.00305
_____
🧲Trend-Line: 0.00377
❌Stop-Loss: 0.00385
💡After reaching the first target you can put the rest of the position to breakeven
#ID20000036834
🌐 New Popular Cryptocurrencies Now Live on SLEX Exchange! 🎉
🚀 SLEX has expanded our trading offerings with the addition of Injective (INJ), Arbitrum (ARB), and Gala (GALA)!
🔹 Cryptos Listed:
- Injective (INJ)
- Arbitrum (ARB)
- Gala (GALA)
🔹 Trading Pairs:
- INJ/USDT
- ARB/USDT
- GALA/USDT
🤑Trade these dynamic assets to boost your earnings and diversify your portfolio on the SLEX Centralized Exchange!
#SLEXUpdate#INJUSDT#ARBUSDT#GALAUSDT#SpotMarket#SLEXTrading#TradeOnSLEX
Website| Telegram | Reddit | Facebook | Instagram | Medium | Linkedin | Twitter