Функция 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
BAMBUK NAZARIYASI🎋
Bambukni ekib, muntazam sug'orib va parvarish qilsangiz, birinchi yil hech qanday o'zgarish sezilmaydi. 2-, 3-, va 4-yilda ham biror o'sish alomatlari ko'rinmaydi.
Ammo aslida, bu vaqt davomida bambuk yer ostida kuchli ildiz tizimini rivojlantiradi.
So'ngra, 5-yil kelib, bambuk bir necha hafta ichida 25-30 metr balandlikka o'sishi mumkin!
Bu nimani anglatadi?
⭐️ Sabr-toqat: Hayotda muvaffaqiyatga erishish uchun vaqt va tinimsiz mehnat talab etiladi. Dastlab natijalar ko'rinmasa ham, ishonchni yo'qotmang.
🔥 Mustahkam asos: Bambukning ildizlari kabi, natijaga erishish uchun ham puxta tayyorgarlik va kuchli poydevor kerak.
💥 Portlash vaqti: To'g'ri vaqt kelganda, barcha mehnatlar natijasi yorqin namoyon bo'ladi.
Xulosa: Hayotda bambuk singari sabr qiling, mustahkam asos quring va oxirida katta natijalarga erishing!
@Azamatjon_design | #eslatmalar
Bu qoida hayotda ko‘p muammolarni oldini olishga yordam beradi.
Jahl ustida javob, xursandlikda va’da , kayfiyat yomonligida esa qaror bermaslikka harakat qilaman. Chunki bu oddiy qoidaga amal qilmagan har bir lavhadan qattiq pushaymon bo'lganman!
Xulosa: Hissiyotlar ta’sirida shoshilinch qaror bermaslik kerak!
@Azamatjon_design | #eslatmalar
BAMBUK NAZARIYASI🎋
Bambukni ekib, muntazam sug'orib va parvarish qilsangiz, birinchi yil hech qanday o'zgarish sezilmaydi. 2-, 3-, va 4-yilda ham biror o'sish alomatlari ko'rinmaydi.
Ammo aslida, bu vaqt davomida bambuk yer ostida kuchli ildiz tizimini rivojlantiradi.
So'ngra, 5-yil kelib, bambuk bir necha hafta ichida 25-30 metr balandlikka o'sishi mumkin!
Bu nimani anglatadi?
⭐️ Sabr-toqat: Hayotda muvaffaqiyatga erishish uchun vaqt va tinimsiz mehnat talab etiladi. Dastlab natijalar ko'rinmasa ham, ishonchni yo'qotmang.
🔥 Mustahkam asos: Bambukning ildizlari kabi, natijaga erishish uchun ham puxta tayyorgarlik va kuchli poydevor kerak.
💥 Portlash vaqti: To'g'ri vaqt kelganda, barcha mehnatlar natijasi yorqin namoyon bo'ladi.
Xulosa: Hayotda bambuk singari sabr qiling, mustahkam asos quring va oxirida katta natijalarga erishing!
@Azamatjon_design | #eslatmalar
SHOGIRLIK INQIROZI!
Hozirgi kuzatuvlarimdan kelib chiqib, dolzarb va juda muhim masalaga e'tibor qaratmoqchiman.
Hozirda (turli sohalarda tez daromad keltiruvchi kasblar) bo‘yicha kurslarni bitirgan o‘quvchilar aksariyat hollarda to‘g‘ridan-to‘g‘ri ishga kirishga intilmoqda. Bu yaxshi yo‘l, lekin birdaniga 3-6 oy ichida mutaxassis bo‘lish haqiqatga yaqin emas.
Avvallari (sartaroshlik, ustachilik va hokazo) kasblar bo‘yicha ustalarga shogird tushilar, ularning yonida yillar davomida ishlanar edi. Qachonki usta "Fotiha" bersa, shogird mustaqil ish boshlagan. Ya'ni bu jarayon mutaxassis bo‘lish darajasiga yetguncha 3-5 yil yoki undan ham ziyod davom etgan. Hech qanday haq evazsiz va kutuvlarsiz, ustozga xizmat qilib tajriba orttirilgan.
Oxirgi paytlarda esa bu holat yo‘qolib borayotgandek go'yo. Kursni bitirgan ko‘plab "mutaxassislar" o‘zlarini sohaning Pro Ultra ustasi deb bilishadi. Lekin ular o‘z bilimlari va amaliy tajribasi yetarli emasligini anglamaydi. Va bundaylardan ko'plab ish beruvchilar ham aziyat chekmoqda.
Xulosa: 3-6 oylik kurs bilan to‘laqonli mutaxassis bo‘lish qiyin. Qaysi zamonaviy kasbni o‘rganmang, o‘zingizga shu sohada katta tajribaga ega ustoz toping va ulardan bilim oling. Ya'ni tavsiyam kerak bo'lsa tekinga ishlang! Ustoz bo'la oladigan mutaxassislar bilan ishlang va ulardan bilimlarni, duolarni oling! Ustoz bilan ishlash, rivojlanish - sizni haqiqiy professional qiladi
@Azamatjon_design#eslatmalar#problem_solution
#PROBLEM
Dunyoda adolatsizlik bor – ba’zilar ko‘p narsaga ega, boshqalar esa hech narsasiz...
#SOLUTION
Odamlar bir-biriga yordam berishi kerak – agar hamma faqat o‘zini o‘ylasa, hayot yomonlashadi. Faqat birlikda adolat bo‘lishi mumkin.
Xulosa:
Ba’zilarning ko‘p narsaga ega bo‘lishi faqat boylik bilan emas, balki salohiyat, imkoniyat, nasab, sog‘liq, yashash joyi kabi ustun jihatlar bilan farqlanadi. Hech narsasiz deganda esa, sog‘liq muammolari, nizolar, ochlik, qashshoqlik, ilmsizlik va boshqa imkonsiz holatlar tushuniladi.
Yechim:
Odamlar bir-biriga yordam berishi kerak, ya’ni bilgan bilmaganga o‘rgatishi, to‘q ochni to‘ydirishi, imkonli inson imkonisizga ko‘mak berishi lozim. Ya’ni, biz qanday vaziyatda bo‘lmaylik, bizdan pastdagilarga yordam berishimiz, o‘z ustimizda ishlashdan to‘xtamasligimiz va shukr qilishimiz kerak.
@Azamatjon_design#eslatmalar#problem_solution