Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Kompyuteringizni tezlashtirish uchun 5 ta oddiy layfxak!
#mohirlik
1. Diskni tozalash
Qanday qilish kerak?: Win+R ni bosib, "cleanmgr" deb yozing va "OK" tugmasini bosing. Bu Windowsning diskni tozalash vositasini ochadi, unda keraksiz fayllarni o'chirib, diskni tozalashingiz mumkin.
2. Avtomatik ishga tushishlarni o'chirish
Qanday qilish kerak?: Win+R ni bosib, "msconfig" deb yozing va "OK" tugmasini bosing. "Startup" (Ishga tushirish) tabida kerakmas dasturlarni o'chirib, tizimni tezlashtirish mumkin.
3. SSD foydalaning
Qanday qilish kerak?: SSD-ni tizimga o'rnatish uchun, Win+R ni bosib, "devmgmt.msc" deb yozing va "OK" tugmasini bosing. Bunda qurilma boshqaruvi ochiladi va yangi SSD qurilmasi qo'shiladi.
4. Vaqtinchalik fayllarni o'chirish
Qanday qilish kerak?: Win+R ni bosib, "%temp%" deb yozing va "OK" tugmasini bosing. Bu sizni vaqtinchalik fayllar joylashgan papkaga olib boradi, u yerdan barcha fayllarni o'chirishingiz mumkin.
5. RAMni kengaytirish
Qanday qilish kerak?: Win+R ni bosib, "sysdm.cpl" deb yozing va "OK" tugmasini bosing. "System Properties" oynasidan "Advanced" tabida, "Settings" tugmasini bosing va "Performance Options" bo'limida RAMni kengaytirish uchun sozlamalar qilishingiz mumkin.
🔧Bu oddiy qadamlar yordamida kompyuteringizning ishlash tezligini oshirishingiz mumkin!
@kompyuter_akademiyasi
Odatiy kontekst menyusini qaytarish
#mohirlik / @pcTeapot
ℹ️ Windows 11'da sichqonchaning o'ng tugmachasini bosish menyusi yanada minimalistik bo'lib qoldi, bu esa Windows 7, 10 ishlatganlar uchun uncha qulay emas. Agar bu sizni qoniqtirmasa, klassik kontekst menyusi osongina qaytarilishi mumkin. Buning uchun reestrga kichik o'zgartirishlar kiritish kerak.
✅ Buni "Командной строкa" yordamida qanday qilishni ko'rib chiqamiz. Uni ishga tushiring (Win+R ga cmd deb yozib, OK tanlanadi) va quyidagi buyruqni bajaring va kompyuteringizni qayta ishga tushiring:
reg.exe add "HKCU\Software\Classes\CLSID{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
🎯 Ushbu usul foyda bermagan bo'lsa mana bu dasturni ishlating.
💻 Kompyuterni birga o'rganamiz ⤵️
Telegram I YouTube I Insta I TikTok
Endi xaker bo'lamiz!
#mohirlik
ℹ️Quyidagi videoda ishlatilgan fayllar. Barchasini kodlarini quyiroqda yozib qoldiraman.
💻 Kompyuterni birga o'rganamiz ⤵️
Telegram I YouTube I Insta I TikTok
Kerakli dasturni doimo administrator nomidan ochiladigan qilish
#mohirlik / @pcTeapot
ℹ️ Ilovani Administrator nomidan ishga tushirish uchun siz yorliq yoki bajariladigan faylni sichqonchaning o'ng tugmasi bilan bosishingiz va bir xil nomdagi (запуск от имени администратора) elementni tanlashingiz kerak.
✅ Bundan tashqari, dasturni odatdagidek ishga tushirishingiz mumkin, shunchaki CTRL + SHIFT tugmalarini bosib ushlab turing. Shunda dastur admin nomidan ochiladi.
🔹Yorliq yoki faylning "Свойства" ini oching. "Совместимость" yorlig'iga o'ting. "Параметры" blokida "Запускать эту программу от имени администратора" katagiga belgi qo'ying. Ushbu usullar yordamida dasturdan to'liqligicha foydalanishga erishishingiz mumkin.
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIYouTubeIInstaITikTok
Windows 11 da foydalanuvchilarni o'chirish usullari
#mohirlik / @pcTeapot
ℹ️ Agar biron sababga ko'ra siz Windows-da hisob (profil) ni o'chirishingiz kerak bo'lsa, bu bir necha usul bilan amalga oshirilishi mumkin.
🔹 "Параметры" - "Учетные записи" - "Другие пользователи" bo'limiga o'ting va o'chirilishi kerak bo'lgan profilni tanlab "Удалить" tugmasini bosing.
🔸 Konsolni administrator sifatida oching va net user Username /delete buyrug'ini bajaring. C:\Users\Username jildini qo'lda o'chirish kerak bo'ladi.
🔹Win+R tugmalarini bosing va netplwiz ni bajaring. Profilni tanlang va "Удалить" tugmasini bosing.
🔸Win+R tugmalarini bosing va lusrmgr.msc ni ishga tushiring. "Пользователи" ni tanlang, so'ngra hisobni tanlang, ustiga sichqonchaning o'ng tugmachasini bosing va "Удалить" ni tanlang.
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIYouTubeIInstaITikTok
Windows 11ni tezlatish yo‘li topildi!
#mohirlik / ict.xabar.uz
ℹ️ Ijtimoiy tarmoqlar foydalanuvchilari Windows 11 da o‘rnatilgan fayllar menejeri (“provodnik”)ni tezlatish yo‘lini topishdi. Bu haqda HotHardware nashri xabar berdi.
Windows 11 ning faol versiyasidan foydalanuvchilar fayllar menejeri (“provodnik”) juda sekin ishlashidan ko‘p shikoyat qilishadi. Ularga buning yechimini X (sobiq Twitter) ijtimoiy tarmog‘ida VivyVCCS niki ostidagi foydalanuvchi topib berdi, deb yozdi nashr.
O‘sha mutaxassis (foydalanuvchi)ning aytishicha, navigatsiyalar panelidagi yangilanishlar fayllar menejerining tormozlanishiga sabab bo‘lishi mumkin, chunki “provodnik” har bir papkani ochish jarayonida navigatsiyalar paneli bilan bog‘lanadi.
❔Xo‘sh, tezlatuvchi o‘sha sehrli tugma qaysi?
VivyVCCS tushuntirishicha, navigatsiyalar panelini o‘chirib qo‘yish kerak, buning uchun F11 tizim tugmasi ikki marta bosilib, to‘liq ekranli rejimga kirish va qaytib chiqish kifoya. Sinab ko‘ramiz. Natijasini izohlarda yozamiz 😉
💻 Kompyuterni birga o'rganamiz ⤵️
TelegramIInstagramITikTokIYouTube