Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Zahiriddin Muhammad Bobur tavalludining 543 yilligi
📝Amir Temurning beshinchi avlodi, Fargʻona hukmdori Umarshayxning farzandi Zahiriddin Muhammad Bobur Andijonda 1483-yil 14-fevralda tugʻilgan
✅
Bu yil shoh va shoir Zahiriddin Muhammad Bobur tavalludining
543 yilligi nishonlanadi.
O‘zbek adabiyotining yirik namoyondalaridan biri, shoir, adib, olim, sarkarda, yirik davlat arbobi,
“Buyuk Boburiylar sulolasi”
asoschisi ilk bor
12 yoshida taxtga
oʻtirgan.
✏️
Bobur o‘zbek tarixida tom ma’noda yirik shaxs. Uning tarixchi olim, zukko adib va shoir sifatida qoldirgan adabiy merosi bebahodir.
Bobur hukmdorlik
majburiyatlaridan ortib yirik asarlar yozishga muvaffaq bo‘lgan.
#Bobur543
Sen — ajdodlaringni tugallanmagan rejasisan!
Zahiriddin Muhammad Bobur siymosida biz bir haqiqatni eslatdik:
buyuklik meros bo‘lib kelmaydi — u harakat bilan uyg‘onadi.
Sun'iy intellekt orqali tarixni jonlantirdik,
lekin maqsad o‘tmishni emas — seni uyg‘otish.
Agar yuragingda g‘urur uyg‘onsa,
demak video o‘z vazifasini bajardi.
Endi navbat senda, videoni do'stlaringa ulash 🔥
#Bobur543
@isakovxusniddin
Sen — ajdodlaringni tugallanmagan rejasisan!
Zahiriddin Muhammad Bobur siymosida biz bir haqiqatni eslatdik:
buyuklik meros bo‘lib kelmaydi — u harakat bilan uyg‘onadi.
Sun'iy intellekt orqali tarixni jonlantirdik,
lekin maqsad o‘tmishni emas — seni uyg‘otish.
Agar yuragingda g‘urur uyg‘onsa,
demak video o‘z vazifasini bajardi.
Endi navbat senda, videoni do'stlaringa ulash 🔥
#Bobur543
🕊Telegram📱Instagram📺YouTube🔹Linkedin🌍Veb sayt
#Bobur543
#tanlov
✨Haftalikning 6-kun savollari:
‼️Javoblar to‘liq holda izohda qabul qilinadi (A, B, D, E emas).
1. “Xo‘jand va O‘ratepakim, asl bularning otlari kitoblarda …dir”.
A. Isfara
B. Vorux
D. Usrushna
E. So‘x
2. “Boburnoma”da … xotin-qiz obrazi turli darajada tasvirlangan.
A. o‘nga yaqin
B. oltmishga yaqin
D. saksonga yaqin
E. yuzga yaqin
3. “Boburnoma”da Bobur mehr bilan tilga olgan, “Xo‘ja Kalonni ta’zim-u tavoze bilan kutib olib, boshiga tayoq bilan urib o‘ldir”gan ayol kim?
A. Qutluq Nigorxonim
B. Xonzodabegim
D. Oyshabegim
E. Esan Davlatbegim
4. “Boburnoma”da jami nechta hukmdorning portreti yaratilgan?
A. Beshta
B. Oltita
D. Yettita
E. O‘nta
5. Boburning “Lola” g‘azalidagi qofiyadosh so‘zlarning to‘g‘ri ketma-ketligini aniqlang.
A. lola, g‘azola, hola, havola, nola, risola
B. g‘azola, hola, lola, havola, nola, risola
D. g‘azola, hola, havola, nola, lola, risola
E. lola, g‘azola, hola, nola, havola, risola
6. Boburning “Yaxshilig‘” radifli g‘azalini ifodali o‘qing.
✅Test savollari "Alisher Navoiy va Zahiriddin Muhammad Bobur"ga bag'ishlangan yopiq kanal asosida tuzildi.
🌐Sayt
✈️Telegram
✅Murojaat
♾Muhokama
🌐Instagram
#Bobur543#video
🔥Zahiriddin Muhammad Boburni tanish – yosh avlod uchun tarixiy xotirani saqlash, ma’naviy boylikdan bahramand bo‘lish va hayotiy saboqlarni o‘rganish demakdir.
✅U nafaqat o‘z davrining qahramoni, balki bugungi kun yoshlari uchun ham ibrat maktabidir.
🌐Sayt
✈️Telegram
✅Murojaat
♾Muhokama
🌐Instagram
#Navoiy585#Bobur543#tanlov
Barcha g'oliblar ma'lum bo'ldi.
📣"Til va adabiyot ta'limi" tahririyati tomonidan Alisher Navoiy tavalludining 585 yilligi va Zahiriddin Muhammad Bobur tavalludining 543 yilligi munosabati bilan o'tkazilgan tanlov o'z yakuniga yetdi.
🔥Tahririyat a’zolari tomonidan 53nafar obunachining 6 kun davomida test va topshiriqlarga yo'llagan javoblari ichidan eng to'g'rilari tanlab olindi.
G'olib obunachilar:
1. Kumush Odina – "Hayrat ul-abror"
2. Iroda Usmonova – "Farhod va Shirin"
3. Sayyoraxon – "Layli va Majnun"
4. Marhaboxon Mansurova – "Sab'ai sayyor"
5. Diyorbek – "Saddi Iskandariy"
6. Umida Esanboyeva – "Boburnoma".
💥Shuningdek, bellashuvda faol qatnashgan Ra'no Absalomovaga rag'batlantiruvchi mukofot sifatida maxsus sovg'a 🎁 taqdim etiladi.
❤️Tanlovda ishtirok etgan barcha obunachilarimizga o‘z minnatdorligimizni bildiramiz.
Bizni kuzatishda davom eting va yangi loyihalar uchun ijtimoiy tarmoqlarimizni qo'llab-quvvatlashni unutmang!
🌐Sayt
✈️Telegram
✅Murojaat
♾Muhokama
🌐Instagram
#Navoiy585#Bobur543#tanlov
"Boburnoma" g'olibi aniqlandi.
📣"Til va adabiyot ta'limi" tahririyati Alisher Navoiy va Zahiriddin Muhammad Bobur tavalludiga bag'ishlab hafta davomida test savollari va topshiriqlarni berib bordi.
✅Hakamlar hay'ati tomonidan kechagi topshiriqlarga yo'llangan javoblar ko'rib chiqildi. Unga ko'ra, Boburning "Yaxshilig'" radifli g'azalini ifodali o'qish sharti bo'yicha Umidaxon Soxibjonqiziga go'zal ijro uchun tasanno 👏 aytamiz. Uning adashi Umida Esanboyevani esa g'olib bo'lgani bilan qutlaymiz!🎉
🌐Sayt
✈️Telegram
✅Murojaat
♾Muhokama
🌐Instagram
#Navoiy585
#Bobur543
#tanlov
"Xamsa"ning beshinchi dostoni – "Saddi Iskandariy" g‘olibi aniq bo‘ldi.
📣"Til va adabiyot ta'limi" tahririyati Alisher Navoiy va Zahiriddin Muhammad Bobur tavalludiga bag'ishlab hafta davomida test savollari va topshiriqlarni berib bordi.
✅Kechagi testlarga Diyorbek nisbatan to'g'ri javob berib, kitob egasi bo'ldi.
🎉G'olibimizni mukofot bilan qutlaymiz!
Bizni kuzatishda davom eting. Navbatdagi test savollari 17:00dan keyin kanalga joylanadi.
🌐Sayt
✈️Telegram
✅Murojaat
♾Muhokama
🌐Instagram
#Navoiy585
#Bobur543
#tanlov
✨Haftalikning 5-kun savollari:
‼️Javoblar to‘liq holda izohda qabul qilinadi (A, B, D, E emas).
1. Alisher Navoiyning "Saddi Iskandariy" dostoni buyuk sarkarda Iskandarga bag'ishlangan. Dastlab bu mavzuda kim ijod qilgan?
A. Abdurahmon Jomiy "Xiradnomayi Iskandariy" asarida
B. Xusrav Dehlaviy "Oyinayi Iskandariy" asarida
D. Firdavsiy "Shohnoma" asarida
E. Nizomiy Ganjaviy "Iskandarnoma" asarida
2. "Boburnoma" qo'lyozmalari bo'yicha olib borilgan tadqiqotlarga ko'ra, shu kungacha asarning XVI-XX asrlarda ko'chirilgan nechta qo'lyozmasi mavjud?
A. 17 ta
B. 7 ta
D. 10 ta
E. 19 ta
3. Alisher Navoiyning adabiyotshunoslikka doir aruzga bag'ishlangan asari qaysi?
A. “Majolis un-nafois”
B. "Muhokamatul-lug'atayn"
D.“Nazm ul-javohir”
E. "Mezon-ul avzon"
4. "Muhokamat ul-lug'atayn" asarida qaysi tilni "nazm gulistonining andalibi nag'masaroyi" deb ataydi?
A. Eski o'zbek tilini
B. Fors tilini
D. Arab tilini
E. Chin tilini
5. Navoiy, tiling asrag'il zinhor,
Desangkim, yemay dahr ishidan fusus.
Alisher Navoiyning ushbu qit'asi qaysi xalq maqoliga to'g'ri keladi?
✅Test savollari "Alisher Navoiy va Zahiriddin Muhammad Bobur"ga bag'ishlangan yopiq kanal asosida tuzildi.
🌐Sayt
✈️Telegram
✅Murojaat
♾Muhokama
🌐Instagram
#Bobur543#AndijonFarzandi#ShohVaShoir
Shoh va shoir, Andijon farzandi — Zahiriddin Muhammad Bobur tavalludining 543 yilligi munosabati bilan “Hududiy elektr tarmoqlari” AJ Andijon hududiy filiali jamoasi faol ishtirok etib, g‘azallar bilan ma’naviy muhitga o‘zgacha ruh bag‘ishlamoqda.
Bobur ruhi — qalblarda, g‘azallar esa dillarda jarang sochmoqda!
“Hududiy elektr tarmoqlari” AJ Andijon hududiy filiali matbuot xizmati
Het.uz | Facebook | Instagram | YouTube | Telegram