Функция 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
#admin@cosmosy
✨ В Корее уже 11 апреля, а значит пришло время поздравить наших очаровательных cosmosy с первой годовщиной со дня их официального дебюта!
👍 За этот год девочки подарили нам 2 прекрасных альбома, множество интересных клипов, а также ярких выступлений и образов! Они рассказывают нам свою историю, в которой они одновременно предстают в качестве обычных школьниц, в качестве айдолов и даже мифических существ!
🎉 Желаем cosmosy оставаться такими же милыми и целеустремлёнными! Пусть у них будет как можно больше верных поклонников, а в работе пусть их окружают внимательные и заботливые люди!
🤗 Счастья, здоровья и успехов вам, наши дорогие Химеша, Дихана, Камион и Эймей!
يه جوری لفت میدین ک انگار سيبيلاي معين رو من زدم😐
لباي شهرام صولتي رو من پروتز کردم😐
کليپس رو من ساختم😐
من گفتم پسرا ابرو بردارن😐
من گفتم گلزار اهنگ بخونه😐
سرعت نت رو من اوردم پايين😐
شماره احسان علی خانی رو من دارم😐
که دخترا خواستگار ندارن تقصیر منه😐
کولر خونه رو من خاموش میکنم😐!
خو لفت ندین دیع😐😐😒
#Admin
@dardodelhayeman751
✨Good evening our dear members. How are you doing? Hope you're all fine and safe!
I hope you find the posts useful and you're really doing a great progress in developing listening and reading skills.👍🏻
My advice for you is to listen and read regularly and reinforce them through answering the quizzes after each recording.🎧
Best wishes!🌹
✍🏻#admin
✨Good afternoon, dear friends.🌸
Be ready for tonight's quiz onThe First, Second&Third Conditionalslessons. So kindly, give them a quick review!🙂
✍🏻#admin
✨ Good evening dear friends 🌸
How are you all doing? Hope you're doing great and making a good use of your time at home!🙂
Kindly, review all the lessons about the future above👆🏻and be well prepared for the quiz tonight, God willing.
I expect to see more interaction than before. The more you participate in answering the questions, the more you understand the grammar rules and guidelines.👌🏻
Stay home, wash your hands regularly and be safe.😊
✍🏻#admin
Good evening dear friends! 🌺
Are you ready for tonight's quiz? I'm sure you are!👍 It's gonna be on the last two lessons:Going to and Will.
Stay home and be safe.🙂
✍🏻#admin
Good evening dear friends.🌸
Kindly, review the last two lessons on the past perfect simple and past perfect continuous for tonight's quiz, God willing.😊
Please, stay home and be safe! 🤲
✍#admin
@EnglishGrammarSecrets
Dear members!✨
This is your channel, so if you have any comment, suggestion or question, feel completely free to send it here👇.
@EnglishGrammarSecrets_bot
✍#Admin
https://medium.com/django-musings/customizing-the-django-admin-site-b82c7d325510
Customizing the #Django#Admin site
Let’s start by saying that Django’s admin site is spectacular. It can literally save you months of work, but having said that, one thing that one needs to understand is that Django’s admin site is only ok as an internal tool. It is not, and never has been intended to be, an end user tool.
✨Good morning, dear friends. Have a wonderful day ahead.☀️
Be ready for tonight's #quiz onMixed Conditionalslesson. So kindly, give them a good review!💪🏻🙂
✍🏻#admin