Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для URL, имени файла, имени объекта в каком-то софте и тд. Требования совместимости простые: в тексте должны быть только допустимые символы. Обычно это a-z, 0-9 и "_" или "-". То есть, только прописные буквы латинского алфавита и цифры (как пример).
Допустим, нам нужно название статьи в блоге преобразовать в slug для добавления его в URL этой статьи. Как это лучше всего сделать?
В Django по умолчанию есть готовая функция slugify для таких случаев.
Но я её никогда не использую. Почему? Потому что её недостаточно!
Приведём пример
>>> from django.utils.text import slugify
>>> slugify('This is a Title')
'this-is-a-title'
Пока всё отлично
>>> slugify('This is a "Title!"')
'this-is-a-title'
Спец символы удалились, всё хорошо.
>>> slugify('Это заголовок статьи')
''
Вот и приехали 😢. Если текст не английский то буквы просто игнорируются. Можно это поправить
>>> slugify('Это заголовок статьи', allow_unicode=True)
'это-заголовок-статьи'
Но тогда мы не вписываемся в условие. У нас появилась кириллица в тексте.
Так как я часто пишу сайты для русскоязычных пользователей эта проблема весьма актуальна. Я не использую стандартную функцию и всегда пишу свою.
Оригинал я не беру в расчёт и пишу полностью свою функцию. И так, по порядку:
🔸1. Исходный текст:
>>> text = 'Мой заголовок №10 😁!'
Взял специально посложней со специальными символами.
🔸2. Транслит
Необходимо сделать транслит всех символов в латиницу. Здесь очень выручает библиотека unidecode. Помимо простого транслита кириллицы в латиницу она умеет преобразовывать спец символы и иероглифы в текстовые аналоги.
from unidecode import unidecode
>>> unidecode("Ñ Σ ® µ ¶ ¼ 月 山")
'N S (r) u P 1/4 Yue Shan'
Очень крутая библиотека, советую👍
В нашем случае получаем такое преобразование:
>>> text = unidecode(text)
>>> print(text)
'Moi zagolovok No. 10 !'
Отличный транслит. Смайл просто удалился, хотя я ждал что-то вроде :). Ну и ладно, всë равно невалидные символы.
А еще наш код уже поддерживает любой язык, будь то хинди или корейский.
🔸4. Фильтр символов
Unidecode не занимается фильтрацией по недопустимым символам. Это мы делаем в следующем шаге через regex. Просто заменим все символы на "_" если они вне указанного диапазона.
>>> text = re.sub(r'[^a-zA-Z0-9]+', '_', text)
>>> print(text)
'Moi_zagolovok_No_10_'
Символ "+" в паттерне выручает когда несколько недопустимых символов идут рядом. Все они заменяются на один символ "_".
🔸5. Slugify
Осталось удалить лишние символы по краям и сделать нижний регистр
>>> text = text.strip('_').lower()
>>> print(text)
'moi_zagolovok_no_10'
Получаем отличный slug! 😎
🌎 Полный код в виде функции.
______________
PS. Проверку что в строке остался хоть один допустимый символ я бы вынес в отдельную функцию.
#libs#tricks#django
#Sirdaryo
📌 Nomoddiy madaniy merosni asrash yo‘lida muhim tashabbus
⚡️Sirdaryo viloyati Sardoba tumani Rovot mahallasida istiqomat qiluvchi hunarmand G‘ozibekova Mamlakat Xudoyberdiyevna tomonidan milliy hunarmandchilikni rivojlantirish borasida ibratli ishlar amalga oshirilmoqda.
📊U tomonidan tashkil etilgan ustaxonada 4-sonli umumta’lim maktabi o‘quvchilari uchun do‘ppido‘zlik san’ati bo‘yicha to‘garak mashg‘ulotlari yo‘lga qo‘yilgan. Mashg‘ulotlar davomida o‘quvchilarga milliy naqshlar, ularning ramziy ma’nolari hamda do‘ppi tikish sir-asrorlari o‘rgatilmoqda.
🌍Shuningdek, “Uch avlod uchrashuvi” tadbiri tashkil etilib, unda katta, o‘rta va yosh avlod vakillari ishtirok etdi. Tadbir davomida ustoz-shogird an’analari, hunarmandchilik tajribasi va milliy qadriyatlar haqida samimiy suhbatlar bo‘lib o‘tdi.
✨ Ushbu tashabbuslar yosh avlodni hunarmandchilikka jalb etish, qadimiy an’analarni saqlab qolish hamda ularni keng targ‘ib qilishga xizmat qilmoqda.
Faсebook|✅Instagram
✅Youtube | ✅Murojaat yo'llash
#Sirdaryo
🇺🇿O‘zbekiston Respublikasi Prezidentining 2019 yil 29 yanvardagi PQ-4138-son qaroriga, shuningdek, Ichki ishlar vazirligi, O‘zbekiston Respublikasi Kambag‘allikni qisqartirish va bandlik munosabatlari vazirligi hamda “Hunarmand” uyushmasining 2019 yil 25 fevraldagi 14, 22-q/q va 2-son qo‘shma qarori ijrosini ta’minlash maqsadida,
🇺🇿Sirdaryo viloyati jazoni ijro etish 40-son koloniyasining 2026 yil 21 fevraldagi 357-sonli xatiga asosan usta-shogird maktabi shakllantirildi.
📊Mazkur maktab doirasida hunarmandchilikning “Metaldan yasalgan buyumlar”, “Yog‘och o‘ymakorligi”, “Gul bosilgan gazlamalar va chokli buyumlar tayyorlash” hamda “Milliy poyabzal tayyorlash” yo‘nalishlari bo‘yicha 45 nafar mahkumga sertifikat berildi.
✅Faсebook|✅Instagram
✅Youtube | ✅Murojaat yo'llash
#Sirdaryo
🌸 “Milliylik g‘ururimiz – milliylik faxrimiz”
⚡️Sirdaryo viloyatida o‘tkazilayotgan “Ayollarni e’zozlash” oyligi doirasida Guliston tumanida o‘quv seminari tashkil etildi. Seminar “Milliylik g‘ururimiz – milliylik faxrimiz” shiori ostida o‘tkazildi.
📌Tadbirda Sirdaryo viloyati hokimining o‘rinbosari, oila va xotin-qizlar boshqarmasi boshlig‘i Nargiza Tojiboyeva, Guliston tumani hokimining o‘rinbosari, oila va xotin-qizlar bo‘limi boshlig‘i Matluba Xudoyberdiyeva, “Hunarmand” uyushmasi Sirdaryo viloyat boshqarmasi xotin-qizlar bo‘yicha mutaxassisi Muxayyo Murodova hamda hunarmand va dizayner Dilfuza Malikova ishtirok etdi.
📊Ular milliy qadriyatlarimizni asrash, milliy liboslarni keng targ‘ib qilish hamda ayollarning jamiyatdagi o‘rni va nufuzini oshirish masalalari yuzasidan fikr-mulohazalarini bildirdilar.
📊Seminar davomida milliylik – xalqning o‘zligi, boy tarixi va madaniyati merosining ajralmas qismi ekani alohida ta’kidlandi.
Faсebook|
✅Instagram
✅Youtube |
✅Murojaat yo'lla
#Sirdaryo
⚡️ Guliston shahrida “Bir qadamda – ming imkoniyat” mavzusida ishsiz xotin-qizlar bilan uchrashuv o‘tkazildi.
🤝 Tadbir doirasida faol tadbirkor hunarmand ayollar ishtirok etib, o‘z faoliyati va erishgan yutuqlari haqida so‘z yuritdilar. Ular mahallalarda yo‘lga qo‘ygan ish tajribasi, hunarmandchilik orqali daromad topish imkoniyatlari hamda biznesni rivojlantirish yo‘llari yuzasidan amaliy tavsiyalar berdilar.
🟢 Uchrashuvning asosiy maqsadi — xotin-qizlarni tadbirkorlikka, ayniqsa hunarmandchilik faoliyatiga qiziqtirish, ularda o‘z kuchiga bo‘lgan ishonchni mustahkamlash hamda iqtisodiy faolligini oshirishdan iborat.
✅ Tadbir davomida:
• faol tadbirkor hunarmand ayollar tajribasini ommalashtirish;
• ijtimoiy himoyaga muhtoj xotin-qizlarni kasb-hunarga yo‘naltirish;
• shaxsiy biznesni yo‘lga qo‘yish bo‘yicha tushunchalar berish;
• mahallada samarali muloqot va hamkorlik muhitini shakllantirish masalalariga alohida e’tibor qaratildi.
Faсebook|
✅Instagram
✅Youtube |
✅Murojaat yo'llash
#Sirdaryo
🧍♀️ Muminova Barchin Mamasharifovna, hunarmand sifatida, ustoz-shogird an’analari asosida yosh avlodga o‘z hunarini o‘rgatmoqda.
📍Sardoba tumani, Birlashtirilgan mahallasi, ul. Majnuntol ko‘chasida shogirdlar bilan olib borilayotgan amaliy mashg‘ulotlar davom etmoqda.
📊Mazkur ishning asosiy maqsadi – hunarmandchilik sohasida bilim va ko‘nikmalarni avloddan-avlodga yetkazish, shuningdek, yosh iste’dodlarni qo‘llab-quvvatlashdir.
✅Faсebook|
✅Instagram
✅Youtube |
✅Murojaat yo'llash
04.12.2023/09.00
#Sirdaryo
YOSHLAR O'Z HAQ-HUQUQLARIDAN QANCHALIK XABARDOR
Muxbir: Mahfirat XUDOYBERDIYEVA
BIZNI KUZATISHDA DAVOM ETING👇
https://t.me/zortv_bukun
04.12.2023/09.00
#Sirdaryo
TO'LAB BERILMAGAN ALIMENT FUQAROLARNI SUD ZALIGA OLIB KELDI
Muxbir: Mahfirat XUDOYBERDIYEVA
BIZNI KUZATISHDA DAVOM ETING👇
https://t.me/zortv_bukun
02.12.2023/09.00
#Sirdaryo
TALASH BO'LGAN BINO MOJAROSI HAL ETILDI
Muxbir: Mahfirat XUDOYBERDIYEVA
BIZNI KUZATISHDA DAVOM ETING👇
https://t.me/zortv_bukun
30.11.2023/09.00
#Sirdaryo
BOZOR QURILISHIDAN UMIDINI UZGAN DEHQONLAR
Muxbir: Mahfirat XUDOYBERDIYEVA
BIZNI KUZATISHDA DAVOM ETING👇
https://t.me/zortv_bukun