Функция 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
#BAR/USDT analysis :
#BAR has retraced to the support zone, testing the 200 EMA. The price is anticipated to bounce back from this level and aim to test its previous high.
TF : 1D
Entry : $2.300
Target : $2.800
SL : $2.060
#BAR/USDT analysis :
#BAR is currently in an uptrend, trading above the 200 EMA. The price has broken out of the trendline and is expected to continue its bullish momentum, with the potential to test the previous swing high.
TF : 4h
Entry : $2.109
Target : $2.560
SL : $1.900
#BAR result
2nd target achieved in just 10 minutes ✅✅
One more quick profit 11%💰🤑
👉 The longer you wait more you lose profit. Hurry up 🏃♂
☎️ Contact @MichaelStrategiesVip
Сегодня ребята из Алматинского бара OHRA дают свою первую гостевую смену и сразу в Бишкеке, в баре RIAD😎
Уникальный концепт бара, который объединяет оба города, которые причастны к Великому Шелковому Пути.
Бармены-торговцы покажут свои лучшие коктейли, созданные в Нью-Йоркском стиле только из бутилированного алкоголя. И чтобы порадовать странников, будут представлены на продажу ювелирные изделия ручной работы, созданные их друзьями, и по традиции Охры - вы сможете купить любое понравившееся украшение сняв прям с бармена 🤩
Воскресенье, 19.05
19:00-00:00
RIAD BAR (Киевская, 203)
@BishDvizh#bar#тусовка
Оппа, скидки - детектед! Крутые скидосы на коктейли, пиво и кухню в No Options Bar по 20% - ну это точно Без Вариантов! 😎
🚀 Weekend Beer Discounts: Because Even AI Needs a Break 😅
- Оптимизируй свой уикенд: больше пива и еды - меньше затрат!
Начиная уже прям сейчас! Т.е. с этой пятницы и до конца воскресенья!
Ну а в субботу разбудите в себе креативность и поднимите там бокал за 8 Марта, поздравляя прекрасных женщин, ну вот как мы без них!?
А что еще важно знать про бар «Без Вариантов» • «No Options Bar» ?
• Во-первых там аж 26 кранов на вкуснейшее крафтовое пенное!
• Во-вторых там самый большой выбор пива в банках в Бише! Более 400 позиций 🙀
• В-третьих, там есть изысканные коктейли для тех кто на паузе от пены.
• В-четвертых, там есть кухня для любого гурмана, ведь это важно совмещать потребление алкоголя с едой!
Вас уже ждут!
Юнусалиева, 76
время работы
10:00–03:00
#craftbeer#bar
@BishDvizh
Сегодня вечером возьмем четыре небольших бутылочки водки и душевно продегустируем с Юрой и красной рыбкой: https://youtu.be/QEqR_vEQS54 Начало в 19-00, заходите на огонек.) #vodka#bar