Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
#Navro’z_sayli
FORISH TUMANI “O‘XUM” MAHALLASIDA BO‘LIB O‘TGAN “SHUKRONALIK” RUHIDAGI NAVRO‘Z SAYLIDAN LAVHALAR.
🌺 Ushbu tadbirda chet ellik sayyohlarni tashrifi bayramga yanada o‘zgacha shukuh bag‘ishladi.
Tadbirda:
➡️Sumalak sayli;
➡️Milliy ko‘rgazmalar;
➡️Xalq o‘yinlari;
➡️Sport o‘yinlari;
➡️Hunarmandchilik na’munalari va bularning hammasi hududda turizm imkoniyatlarini kengaytirishga qaratilgan.
👉 Bizni ijtimoiy tarmoqlarda kuzatib boring.
😎Instagram😎Telegram / 🕸Websayt / 😎Facebook / 😎YouTube
#navro'z shkuhi
18.03.2026
🪷Bugun 13-sonli umumiy o‘rta ta’lim maktabida Chirchiq shahar tarixi muzeyi hamkorligida “Assalom Navro‘z” nomli bayram tadbiri bo‘lib o‘tdi.
🌸 Tadbir davomida Navro‘z bayramining mazmun-mohiyati, milliy qadriyatlarimiz va urf-odatlarimiz haqida so‘z yuritildi.
🌼 O‘quvchilar tomonidan bahor, yangilanish va do‘stlikni tarannum etuvchi she’rlar, qo‘shiqlar namoyish etildi. Tadbir ishtirokchilarga Navro‘z bayramining qadimiy an’analari va uning xalqimiz hayotidagi o‘rni haqida keng ma’lumot berildi.
🥁Tadbir ko‘tarinki ruhda tashkil etilib, barchaga bayramona kayfiyat ulashdi.
🏛Chirchiq shahar tarixi muzeyi rahbariyati tomonidan 13-sonli umumiy o‘rta ta’lim maktabi direktoriga o‘quvchilarning muzeyga faol tashrifini tashkil etgani uchun tashakkurnoma bilan taqdirlandi.
#navro`z
“Navro‘zni ulug‘lash - insonni ulug‘lashdir!” shiori ostida Muborak gazni qayta ishlash zavodida madaniy-ma’rifiy tadbir bo'lib o'tdi.
👋Bizni kuzating
🌐web-sayt | 📹instagram|💬telegram | 📺youtube | 💬facebook
#navro'z #qadriyat
Qadrli yurtdoshlar!
Bahor yarashgan go‘shalaringizda doimo yashillanish, o‘sish, ulg‘ayish bo‘lsin. Orzularingiz bahorda bo‘y cho‘zgan niholdek o‘sib o‘z mevasini bersin. Tinchlik yarashgan, to‘y yarashgan yurtimiz ostonalarida erta tong quyosh bilan birga baxt kirib kelsin. Kelajagi yorug‘ vatanimizda har bir kishining yuzi vatan oldida yorug‘ bo‘lsin. O‘z mehnatidan rozi elning ko‘ngliga doimo yaxshiliklar, omadlar bahordek kirib borsin. Azizlar har kuningiz Navro‘z bo‘lsin.
Hurmat bilan Davlat va huquq instituti jamoasi.
#Elon
🌸#Bugun_bayram
🌿#Navro‘z
Assalomu alaykum, hurmatli tumanimiz aholisi!
🎉 Navro‘z umumxalq bayrami munosabati bilan sizlar uchun qulaylik yaratish maqsadida bayram o‘tkaziladigan hududga borib-kelish uchun maxsus transport yo‘lga qo‘yildi.
🚌 Transport: 4 ta maxsus avtobus Tuman hokimligi tomonidan tashkil qilinib tekinga aholiga xizmat ko‘rsatadi
📍 Manzil: Qo‘shhovuz mahallasi
🚏 Yo‘nalish boshlanish joyi: Tuman hokimiyatibinosi oldi va Payshanba shaharchasi Eski chexra binosi oldidan harakatlanadi
🕘 Avtobuslar aholiga qulay sharoit yaratib beradi.
🌷 Keling, bahorning eng go‘zal ayyomi — Navro‘zni 🌱 birgalikda nishonlaylik!
🎸 Milliy qadriyatlarimiz, kuy-qo‘shiqlar va bayramona kayfiyat sizni kutmoqda!
✨ Barchangizni bayram dasturiga taklif etamiz!
KATTAQO'RG'ON TUMANI HOKIMLIGI AXBOROT XIZMATI
🌐Web sayt😎Telegram
🌸#Navro‘z_shuko‘hi #bayram_tuhfasi#Fayzobod
🎤Ayni shu go‘zal va qutlug‘ Navro‘z ayyomida O‘rta Chirchiq tumani "Fayzobod" mahallasida joylashgan 33-son davlat maktabgacha ta’lim tashkiloti foydalanishga topshirildi.
⚡️Bu zamonaviy ta’lim maskani bolajonlarimiz uchun barcha qulayliklar bilan jihozlangan bo‘lib, ularning bilim olishi, tarbiyalanishi va barkamol avlod bo‘lib voyaga yetishi uchun munosib shart-sharoitlar yaratilgan.
🌱Navro‘z – yangilanish, ezgulik va ezgu ishlar bayrami. Yangi bog‘cha esa shu bayramning eng chiroyli tuhfalaridan biri bo‘ldi.
⭐️Bolajonlarimiz kulgisi doimo yangrasin!
🌍🌍🌍🌍🌍🌍
Kanalni yaqinlaringiz bilan ulashing
❤https://t.me/toshkentv_xtb| 🌐Facebook|
🔎Veb-sayt | 🌐Instagram|▶️YouTube
👍@ToshvilmmtbgamurojaatBot
🌸 Navro‘z shukuhi: hunarmandlar e’zozda!
⚡️22-mart kuni Qarshi shahrida Navro‘z bayrami munosabati bilan hunarmandchilik ko‘rgazmasi tashkil etildi.
📌Ko‘rgazmada milliy qadriyatlarimizni o‘zida mujassam etgan, mohir ustalar tomonidan yaratilgan noyob va betakror buyumlar namoyish etildi.
📊Tadbir davomida hunarmandlar ishtirokida mahorat darslari ham o‘tkazilib, ishtirokchilar amaliy jarayonlarni bevosita kuzatish va ayrim hunar turlarini sinab ko‘rish imkoniga ega bo‘ldilar. Bu ayniqsa yoshlar uchun unutilmas va foydali tajriba bo‘ldi.
🎖Bayram doirasida hunarmandlarga alohida ehtirom ko‘rsatilib, ular sharafiga fayzli va to‘kin dasturxon yozildi.
#Navro‘z #Hunarmandchilik#MilliyQadriyatlar#Qarshi
Faсebook|
✅Instagram
✅Youtube |
✅Murojaat yo'llash
🌸Mehrli maktabda Navro‘z shukuhi!🌸
Mehr-oqibat, yangilanish va ezgulik ayyomi — Navro‘z bayrami munosabati bilan Mehrli maktab va uning filiallarida ko‘tarinki ruhda bayram tadbirlari tashkil etildi. 🌿
Bolajonlar uchun tashkil etilgan ushbu bayramda milliy qadriyatlarimiz aks etgan sahna ko‘rinishlari, kuy-qo‘shiqlar, raqslar va qiziqarli chiqishlar barchaga unutilmas lahzalarni tuhfa etdi. 🌼
Ayniqsa, bolalarning yuzidagi quvonch, ko‘zlaridagi porloq umid va beg‘ubor tabassumlar bayramga o‘zgacha fayz bag‘ishladi. 🤍
Mehrli maktab jamoasi uchun bunday tadbirlar nafaqat bayram, balki bolalarga mehr ulashish, ularning qalbida umid va ishonch uyg‘otish imkonidir. 🌱
#Navro‘z #MehrliMaktab#BolalarQuvonchi#MilliyQadriyatlar#BayramShukuhi