Функция 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
E-IPL Bonus Live Free ₹1-₹2000 🔥
Minimum Withdrawal ₹100
Wegar - 5X Free Payment ✅
Link -https://eipl.group
Sign Up Bonus Claim Karlo And Usse Game Play Karo ₹300/₹500 Banake Withdrawal #Free🥳
Fully New Rummy App Loot !! 🔥❤️🔥
Singup Bonus ₹21
Minimum Withdrawal ₹100
➡️Link https://www.ys777.com?chn=eW43NzdfaW5fbnRsYTM=&id=MTI0MDk2NzE2
🔴NOTICE
Ragister Karo Number Bind Karo ₹18 Milga And Bonus Full Use All Game ₹100 Banake #Free Withdrawal lago ✔️✔️
New Casino Website !!
✅
Singup Bonus:-₹100
Min Max Withdrawal ₹1000
Link:-https://www.a2k.vip/?mid=D9ZPYR
➡️Apply Bonus Image Cheak 👇And Play Only Slots Game Complete 30x Wagering And Go Promotion Unlock Bonus Click Karo ₹100 real cash milga usse ₹1000 Banake Withdrawal #Free😄
📌Now you can see that we never fail to deliver you the quality signals you always wanted 😌
This was just 🌊#Free Signals, Real magic happens in our VIP GROUP PREMIUM with daily 5-10 calls like this🤑😎
All loss recovery is just one Step away 👇
☎️Contact Admin Now
@CryptoAngels_Team✅
📱 Whatsapp:https://wa.me/message/FCQOGNWAENWTH1
📌Now you can see that we never fail to deliver you the quality signals you always wanted 😌
This was just 🌊#Free Signals, Real magic happens in our VIP GROUP PREMIUM with daily 5-10 calls like this🤑😎
All loss recovery is just one Step away 👇
☎️Contact Admin Now
@CryptoAngels_Team✅
📱 Whatsapp:https://wa.me/message/FCQOGNWAENWTH1
📌Now you can see that we never fail to deliver you the quality signals you always wanted 😌
This was just 🌊#Free Signals, Real magic happens in our VIP GROUP PREMIUM with daily 5-10 calls like this🤑😎
All loss recovery is just one Step away 👇
☎️Contact Admin Now
@CryptoAngels_Team✅
📱 Whatsapp:https://wa.me/message/FCQOGNWAENWTH1