Функция 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
#REI/USDT analysis :
The price of #REI has tested and bounced back from a support zone that has been tested multiple times. It's anticipated to move upward to higher levels. For a long entry, wait for a retracement.
TF : 1H
Entry : $0.02464
Target : $0.02683
SL : $0.02360
#REI/USDT analysis :
#REI has broken out and retested the previously respected support zone. The price is expected to decline from this level and resume its bearish momentum, potentially testing lower levels.
TF : 1H
Entry : $0.04800
Target : $0.04620
SL : $0.04943
#REI/USDT analysis :
#REI has bounced back from the support zone after a correction phase till the 200 EMA. Price is now expected to keep up its bullish vibe and test the previous swing high.
TF : 1H
Entry : $0.0591
Target : $0.0657
SL : $0.0543
#REI/USDT analysis :
#REI just went below the support levels, which is now acting as resistance for the price. It's expected that the price is going test the previous swing low support level.
TF : 1h
Entry : $0.0563
Target : $0.0519
SL : $0.0594
#REI/USDT analysis -
#REI is in a downtrend. Currently, the price is consolidating above support levels after a pullback. The price is attempting to break through these support levels, and it is expected to do so soon. Wait for the 1-hour candle to close below the level, and then enter on the retest of the price in the marked zone. The previous swing low will be the target.
TF : 1h
Entry : $0.04995
Target : $0.04767
SL : $0.05143