Функция 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
#TAPSWAP VIDEO CODE !!!
Task: Full-Time Students
Ans: 54z1s
Task: Remote Jobs
Ans: zkorac
Task: Earn Big In Crypto | Part 1
Ans: Q82V%
Task: Get Funding With No Cash Upfront
Ans: zksha
Task: Starting From Zero
Ans : honeym
Task : Earn Big In Crypto | Part 2
Ans: 9Q3#G
Task : Side Hustles For Rural Towns
Ans: e8pap
Task : Earn Big In Crypto | Part 3
Ans : X5OUT
Task: Fake Paparazzi
Ans: startn
Task: Personalized Gift Business
Ans: laser
Task: One Person Business
Ans: build
Task: Earn Up To $5,000 As A Crypto Ambassador | Part 1
Ans: 5HD*2
Task: Quit Your 9-5 Job
Ans: strategy
Task: Antique Furniture For Profit
Ans: antique
Task: Win An IPhone & Up To 30,000 USDT
Ans: 9E6R&
Task: Earn Up To $5,000 As A Crypto Ambassador | Part 2
Ans: E4$&3
Task: Shopify Dropshipping Store
Ans: shopify
Task: Game Playtesting
Ans: g8wqa
Task: Gaming Into Cash
Ans: l4le1t
#Tapswap Cinema Codes 27 January 🗓️
☑️Which Crypto Platforms
→2nez
☑️Turn Your Space Into Cash
→cah5
☑️Top Crypto Exchanges
→qhto
☑️stop being broke!
→vtaz
☑️franchise business
→em74
☑️monetize your hobby
→svth
☑️easy money using your car
→q4vd
☑️tapswap update
→waze
☑️make money fast
→sacz
LIKE, FOLLOW AND RETWEET
Join Tapswap 👉https://t.me/tapswap_mirror_1_bot?start=r_452308012