Функция 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
#IOTA/USDT analysis :
#IOTA bounced off the tested support zone with strong volume. A breakout above the trendline is expected, resuming its uptrend. Watch for a break above the $0.4870 level to consider going long. The outlook remains bullish.
TF : 1H
Entry : $0.4870
Target : $0.6000
SL : $0.4212
#IOTA/USDT analysis :
#IOTA is currently consolidating sideways within the support and resistance zones. The price has recently bounced back from the support zone and is expected to continue its momentum to test the resistance zone.
TF : 1D
Entry : $0.1250
Target : $0.1443
SL : $0.1127
#IOTA/USDT analysis -
#IOTA is in a downtrend on the lower time frame, trading below the 200 EMA. Following a corrective pullback, the price is currently holding the support level. A breakdown of this support has triggered an entry in the price, leading to a continuation of the bearish trend. The previous low will be the target level.
TF : 1h
Entry : $0.1670
Target : $0.1493
SL : $0.1797
🔎#IOTA - Новый цикл ?
В 18 декабря представил глобальный расклад по монете IOTA
Спустя 2 месяца монета пришла в зону покупки и сейчас показывает себя отлично чтобы продолжить свой рост
В ближайшие 3 месяца жду рост до уровня 0.45
💻https://ru.tradingview.com/chart/IOTAUSDT/K4o0pgo9-iota-novyj-tsikl/
Как вам эта инвест идея ? пишите в комментарии
Торгуйте с умом
@ProfessorKlinkov