Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
SMath Studio 1.0.8348 (x64/x86)
#dastur / #matematika
ℹ️ SMath Studio - bu matematik ifodalarni hisoblash va murakkab 2D va 3D grafiklarni yaratish uchun bepul dastur. Matritsalar, vektorlar, kompleks sonlar, kasrlar va katta sonlar bilan ishlashni qo'llab-quvvatlaydi. Qulay, grafik (qog'ozda bo'lgani kabi) interfeysi va dasturning boy xususiyatlari munosib miqdordagi sozlamalar va avtomatik rejimlar bilan yaxshi birlashtirilgan.
🌐Rasmiy saytiIOnlayn ishlatish
💾: 3.1 MB (.msi)
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIYouTubeIXarita
SMath Studio 1.0.8348 (x64/x86)
#dastur / #matematika
ℹ️ SMath Studio - bu matematik ifodalarni hisoblash va murakkab 2D va 3D grafiklarni yaratish uchun bepul dastur. Matritsalar, vektorlar, kompleks sonlar, kasrlar va katta sonlar bilan ishlashni qo'llab-quvvatlaydi. Qulay, grafik (qog'ozda bo'lgani kabi) interfeysi va dasturning boy xususiyatlari munosib miqdordagi sozlamalar va avtomatik rejimlar bilan yaxshi birlashtirilgan.
🌐Rasmiy saytiIOnlayn ishlatish
🔽Yuklash
V.M.: Word dasturidan farqli o'laroq grafikalar bilan birgalikda hisob kitoblarni kiritish + hisoblab borish ishimizni ancha yengillashtiradi. Dastur bepul bo'lgani uchun hech qanday faollashtirish talab etilmaydi.
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIYouTubeIXarita
“Yangi O‘zbekiston” universiteti tomonidan birinchi xalqaro konferensiya o‘tkazildi!
✅ “Yangi O‘zbekiston” universitetida V. I. Romanovskiy nomidagi Matematika instituti bilan hamkorlikda “International Conference on Operator Algebras, Varieties of Algebras and Related Topics” xalqaro ilmiy matematika konferensiyasi o‘tkazildi.
☑️ Konferensiyaga:
🇺🇿 yurtimizdan matematik olim Sh. Ayupov;
🇫🇷Fransiyaning Strasburg universiteti professori V. Dotsenko;
🇪🇸 Ispaniyaning De Vigo universitetidan X. Garsiya-Martinez;
🇷🇺Rossiyaning Moskva davlat universitetidan G. Makeev
hamda 50 ga yaqin professor-o‘qituvchi va tadqiqotchilar tashrif buyurdi.
#xalqaro_konferensiya#matematika
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
“Yangi O‘zbekiston” universiteti talabasi Abrorbek Butaev “Qarshi olimpiadasi” tashkilotchilaridan
✅Abrorbek hali yash bo‘lishiga qaramasdan, o‘z bilimini yoshlar bilan bo‘lishish maqsadida 3-4-sinf o‘quvchilari uchun matematika fanidan olimpiada tashkillashtirilishida ishtirok etdi.
☑️Olimpiada “Yangi O‘zbekiston” Universiteti qashqadaryolik tashabbuskor o'quv markazlar, KHISO o‘quv markazi , Qarshi Xalqaro Innovatsion Universiteti, Yoshlar ishlari agentligi Qarshi bo‘limi va @piimaolympiad_edu kanali jamoasi hamkorligida tashkil etildi.
🎗Olimpiada g‘oliblari pul mukofotlari, kitoblar,medallar va “Yangi O‘zbekiston” universiteti tomonidan taqdim etilgan esdalik sovg‘alar bilan taqdirlanadi.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
#Qarshi_olimpiadasi#matematika
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
“Yangi O‘zbekiston” universitetida Iqtisodiyot va Matematika yozgi ilmiy maktablarining yopilish hamda taqdirlash marosimidan videolavha
➖➖➖➖➖➖➖➖
The video from the closing and awards ceremony of the Economics and Mathematics summer scientific schools at New Uzbekistan University
#SummerSchool#iqtisod#matematika#ochilish
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
“Yangi O‘zbekiston” universitetida Iqtisodiyot va Matematika yozgi ilmiy maktablarining yopilish marosimi o'tkazildi
💥 Ilmiy maktablarning maqsadi — iqtisod va matematika yo‘nalishlarida iste’dodli yoshlarni aniqlash va ularni dunyo tan olgan olimlarning ilmiy-tadqiqot ishlariga jalb etish orqali mamlakatimizda iqtisodiy islohotlar samaradorligini yanada oshirishdan iborat.
🌐 Loyihada o‘zbekistonlik yoshlar qatorida Xitoyning turli oliygohlarida tahsil oluvchi 35 nafar talaba ishtirok etdi.
⚡️ Loyiha natijasida kelajakda matematika va iqtisodiyot sohalari rivojiga o’z hissasini qo’shuvchi yosh olimlar hamjamiyati tuziladi.
🔁English
➖➖➖➖➖➖➖➖➖➖➖
#SummerSchool#iqtisod#matematika#ochilish
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Iqtisodiyot va matematika yozgi maktablari davom etmoqda
✅ Iqtisodiyot yozgi maktabining bugungi spikeri Iqtisodiy tadqiqotlar va islohotlar markazi direktori Obid Hakimov O'zbekistonda olib borilayotgan iqtisodiy tadqiqotlar, islohotlar va kelajakdagi istiqbolli rejalar bo'yicha ma'ruza qildi.
📈 Ma'ruzachi o'z nutqida O'zbekistonda iqtisodiy jihatdan rivojlanish uchun ishsizlikka qarshi kurashish bilan bir qatorda, ta'lim, sog'liqni saqlash va urbanizatsiya bilan bog'liq holatlarni ham inobatga olish zarurligini aytib o'tdi.
📌 Eslatib o'tamiz, yozgi maktab 12-iyulga qadar davom etadi.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
#SummerSchool#iqtisod#matematika#ochilish
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
“Yangi O‘zbekiston” universiteti tominidan tashkil etilgan Iqtisodiyot va Matematika yozgi ilmiy maktablaridan videolavha.
➖➖➖➖
A video from the Summer Schools of Economics and Mathematics organized by the New Uzbekistan University.
#SummerSchool#iqtisod#matematika#ochilish
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
Iqtisodiyot va Matematika yozgi ilmiy maktablari o‘z faoliyatini boshladi
✅ Ilmiy maktablarning maqsadi — iqtisod va matematika yo‘nalishlarida iste’dodli yoshlarni aniqlash, ularni dunyo tan olgan olimlarning ilmiy-tadqiqot ishlariga jalb etish orqali mamlakatimizda iqtisodiy islohotlar samaradorligini yanada oshirishdan iborat.
🌐 Loyihada o'zbekistonlik yoshlar qatorida 35 nafar xorijlik talabalar ham ishtirok etishmoqda.
🗓 Ilmiy-maktablar 14-iyul kuniga qadar o‘tkaziladi.
🔁English
➖➖➖➖➖➖➖➖➖➖➖➖➖
#SummerSchool#iqtisod#matematika#ochilish
⬇️Biz ijtimoiy tarmoqlarda:
Veb-sayt | Telegram | Instagram | Facebook
🎯“Kim chaqqon?” – matematika darsida raqobat va rivojlanish!
Matematika fani oʻqituvchisi, Hakimjon ustoz o‘quvchilarini qiziqarli oʻyin orqali o‘ylashga, tezkorlikka va e’tiborga o‘rgatmoqda.
🧮 O‘yin davomida kim misol javobini birinchi topib, do‘skadagi sonni ko‘rsatsa – ball oladi! ✋
Bu usul bolalarning aqliy faolligini, raqobat ruhini va hisoblash malakasini oshiradi. 📈
📹 Qashqadaryodagi darsdan jonli lavha!
#maktab#ustoz#TeachforUzbekistan#matematika#interaktivdars
🎉 Праздник математики и вдохновения!
📍 На торжественной церемонии награждения победителей Открытой математической олимпиады Mezon Inspiring School —
✨ специальный гость: легендарный российский математик, профессор МФТИ и популяризатор науки — Алексей Савватеев!
📚 Победителям вручены дипломы и ценные призы:
🎁 Наборы для исследований "Znatok"
🗣 Умные колонки — для умных детей
💻 А Гран-при получил... ноутбук ASUS — отличный старт для будущих IT-звёзд!
👏 Это был не просто финал олимпиады — это было вдохновение, признание и шаг вперёд!
Мы гордимся каждым участником — вы не просто решаете задачи, вы меняете представление о возможностях школьников!
🚀 Пусть эта олимпиада станет для кого-то первым шагом к большому научному пути.
А впереди — ещё больше открытий, идей и достижений!
#mezonolympiad2025#savvateev#mezoninspiringschool#ilm#matematika#olimpiada#bolalaruchunilm