Функция 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
#OGKB
Совсем упустил из виду, что отсечка сегодня в акциях огк-2
Учитывая дивидендный гэп, то как раз на низ канала актив должен опустится и тогда оттуда я его откуплю по 0.3455.
Цель в таком случае - закрытие гэпа, а это порядка 15%✅
Не иир
#ogkb
Всем доброго дня!🤝🤝🤝
Как обычно, сразу к идеи.
🔼Цена акции отбивается от середины широкого восходящего канала, образуя формацию бычье поглощение.
⚠️Поэтому часть позиции краткосрок я открываю от текущих 0.4215, а часть при ретесте середины канала 0.416.
✔️Цель - 0.435 (отработка шипов)
❌Стоп лосс - 0.412 (под минимум прошлой сессии)
Не иир
⛽️#ogkb
Всем доброго дня!!🤝🤝
Сразу к делу!
Цена акции на прошлой сессии уже протестировала середину канала и пока имеем отскок вверх.
При очередном касание середины канала буду брать в лонг по 0.4141
Цель - 0.43 (отработка шипов)
Стоп - 0.406 (под лой 21 октября).
Не иир
⛽️#Ogkb (ОГК-2)
Всем доброго дня!!!🤝🤝🤝
Решил на него обратить внимание, так как с 15 сентября видим в некоторых днях всплески объема на ростовых свечах, и чёткий отбой от трендовой восходящей красной линии.
☝️Выставлю безлимитную заявку от данной линии по 0.3961, внутри дня могут снова протестировать и отскочить.
✅Цель - 0.4331 (красный нисходящий уровень)
❌Отмена сценария роста - закрепление под восходящей трендовой (ниже 0.3961) по итогам дня!
Не иир
#OGKB (ОГК)
📉На прошлой сессии ушли под среднюю линию канала, сегодня видим ретест снизу.
Хоть котировки чувствовали себя лучше остальных в сентябре, но лонг планирую открыть как только закрепимя над серединой канала (выше 0.4074).
А пока ниже, то возможен провал к скользящей в район 0.38, где также подберу на отскок
Не иир
#OGKB
Совет директоров ОГК-2 рекомендовал дивиденды в размере ₽0,0598167018 на акцию (повторно)
💰Доходность выплаты: 14,7%
⏰Дата закрытия реестра: 5 ноября 2025
⏰ВОСА: 17 октября 2025
@moexdiv
#OGKB
Совет директоров ОГК-2 рекомендовал дивиденды в размере ₽0,0598167018 на акцию
💰Доходность выплаты: 16,1%
⏰Дата закрытия реестра: 10 июля 2025
⏰ГОСА: 23 июня 2025
@moexdiv