Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
👷♂️Siz eng yaxshi yuza sifatini talab qilayotgan oʻsha buyurtmachimisiz?
🧐Siz usta ekansiz, ayting-chi, metallashtirilgan gulqogʻozlar yoki lak qoplamasi uchun devorni qanday tayyorlash kerakligini bilasizmi?
Sizga qulay bo'lishi uchun KNAUF sirtga ishlov berish sifati bo'yicha eng past daraja – Q1 dan, eng yuqori, premium daraja – Q4 gacha tabaqalanuvchi Q1-Q4 (“Q” – nemischa Qualität, ya'ni sifat soʻzidan olingan) tizimini ishlab chiqdi.👌
Batafsil ma'lumot 👉havola orqali
- - - - -
👷♂️Вы тот заказчик, который требует наилучшее качество поверхностей?
🧐Вы мастер, а знаете ли Вы, как подготовить стену к металлизированным обоям или лаковому покрытию?
Для вашего удобства КНАУФ разработал систему Q1-Q4 («Q» — от немецкого Qualität, качество), которая делит качество отделки поверхности от низшего Q1 до высшего, премиум класса, Q4.
Она подходит, как для сухого строительства, так и для систем на базе штукатурок. 👌
Подробнее по 👉ссылке
#knaufuzbekistan#q4
👷♂️Siz eng yaxshi yuza sifatini talab qilayotgan oʻsha buyurtmachimisiz?
🧐Siz usta ekansiz, ayting-chi, metallashtirilgan gulqogʻozlar yoki lak qoplamasi uchun devorni qanday tayyorlash kerakligini bilasizmi?
Sizga qulay bo'lishi uchun KNAUF sirtga ishlov berish sifati bo'yicha eng past daraja – Q1 dan, eng yuqori, premium daraja – Q4 gacha tabaqalanuvchi Q1-Q4 (“Q” – nemischa Qualität, ya'ni sifat soʻzidan olingan) tizimini ishlab chiqdi.👌
Batafsil ma'lumot 👉havola orqali
- - - - -
👷♂️Вы тот заказчик, который требует наилучшее качество поверхностей?
🧐Вы мастер, а знаете ли Вы, как подготовить стену к металлизированным обоям или лаковому покрытию?
Для вашего удобства КНАУФ разработал систему Q1-Q4 («Q» — от немецкого Qualität, качество), которая делит качество отделки поверхности от низшего Q1 до высшего, премиум класса, Q4.
Она подходит, как для сухого строительства, так и для систем на базе штукатурок. 👌
Подробнее по 👉ссылке
#knaufuzbekistan#q4
👷♂️Shubhasiz, kompaniyaning eng mashhur mahsuloti “KNAUF-Rotband” gipsli suvog'idir.
💪U 50 yildan ortiq vaqtdan buyon silliq va tekis yuzalar ramzi bo'lib kelmoqda.
Batafsil ma'lumot 👉havola orqali
Sifatli materiallardan foydalaning.
KNAUFʼdan foydalaning.
- - - - -
👷♂️Бесспорно, самый известный продукт в компании — это гипсовая штукатурка «КНАУФ-Ротбанд».
💪Более 50 лет является символом гладких и ровных поверхностей.
Подробнее по 👉ссылке.
Используйте качественные материалы.
Используйте КНАУФ.
| Facebook| Instagram| YouTube|Bot |
#knaufuzbekistan#rotband#q4
👷♂️Shubhasiz, kompaniyaning eng mashhur mahsuloti “KNAUF-Rotband” gipsli suvog'idir.
💪U 50 yildan ortiq vaqtdan buyon silliq va tekis yuzalar ramzi bo'lib kelmoqda.
Batafsil ma'lumot 👉havola orqali
Sifatli materiallardan foydalaning.
KNAUFʼdan foydalaning.
- - - - -
👷♂️Бесспорно, самый известный продукт в компании — это гипсовая штукатурка «КНАУФ-Ротбанд».
💪Более 50 лет является символом гладких и ровных поверхностей.
Подробнее по 👉ссылке.
Используйте качественные материалы.
Используйте КНАУФ.
| Facebook| Instagram| YouTube|Bot |
#knaufuzbekistan#rotband#q4
👷♂️Tekis oppoq devorlar.
Bu imkonsiz dersiz.
Ammo tajribali ustalar KNAUF-Rotband Pasta Profi binoning ichki yuzalari uchun eng yaxshi yakuniy shpaklyovka ekanligini bilishadi.👌
U quyidagi ajoyib xususiyatlarga ega:
◻️Yuqori adgeziya va elastiklik
◻️Tekis va mustahkam sirt
◻️Yuqori darajadagi oqlik
◻️Koʻp marta muzlagandan soʻng ham foydalanish mumkin
◻️Eng muhimi esa, u darhol foydalanishga tayyor boʻladi.
Bularning barchasi mazkur mahsulotni yuza sifati boʻyicha Q4 (ideal yupqa qatlamli sirtni shpaklyovka qilish) darajasiga erishish uchun ajoyib yechimga aylantiradi.👍
Bu esa, oʻz navbatida, yarim yaltiroq boʻyoq yoki venetsiya suvogʻi kabi yakuniy pardozlash ishlarini bajarishga imkon beradi.
Ichki yuzalarga ishlov berish uchun foydalaning.
☝️KNAUF qoplamaning ulangan joylarini yopish uchun ishlatmang, buning uchun KNAUF-Fugen bor.
Sifatli qurilish materiallaridan foydalaning.
KNAUFʼdan foydalaning.
- - - - -
👷♂️Гладкие белые стены.
Невозможно - скажете вы.
Но опытный мастер знает, что КНАУФ-Ротбанд Паста Профи является лучшей финишной шпаклевкой для поверхностей внутри помещений.👌
Она обладает такими крутыми свойствами, как:
◻️Высокая адгезия и пластичность
◻️Гладкая и прочная поверхность
◻️Повышенная белизна
◻️Возможность многократного замораживания
◻️А главное, она сразу готова к использованию.
И все это делает данный продукт отличным решением для достижения уровня качества поверхности Q4 (идеального тонкослойного шпаклевания поверхности)👍
А это, в свою очередь, позволяет такие финишные покрытия как полуглянцевая краска или
венецианская штукатурка.
Используйте для внутренних работ.
☝️Не используйте для заделки стыков КНАУФ-листов, для этого есть КНАУФ-Фуген.
Используйте качественные стройматериалы.
Используйте КНАУФ.
#knaufuzbekistan#Rotbandpastaprofi#Q4
Tekis oppoq devorlar.
Bu imkonsiz dersiz.
Ammo tajribali ustalar KNAUF-Rotband Pasta Profi binoning ichki yuzalari uchun eng yaxshi yakuniy shpaklyovka ekanligini bilishadi.
U quyidagi ajoyib xususiyatlarga ega:
◻️Yuqori adgeziya va elastiklik
◻️Tekis va mustahkam sirt
◻️Yuqori darajadagi oqlik
◻️Koʻp marta muzlagandan soʻng ham foydalanish mumkin
◻️Eng muhimi esa, u darhol foydalanishga tayyor boʻladi.
Bularning barchasi mazkur mahsulotni yuza sifati boʻyicha Q4 (ideal yupqa qatlamli sirtni shpaklyovka qilish) darajasiga erishish uchun ajoyib yechimga aylantiradi.
Bu esa, oʻz navbatida, yarim yaltiroq boʻyoq yoki venetsiya suvogʻi kabi yakuniy pardozlash ishlarini bajarishga imkon beradi.
Ichki yuzalarga ishlov berish uchun foydalaning.
KNAUF qoplamaning ulangan joylarini yopish uchun ishlatmang, buning uchun KNAUF-Fugen bor.
Sifatli qurilish materiallaridan foydalaning.
KNAUFʼdan foydalaning.
Версия на русском
#knaufuzbekistan#fugen#Rotbandpasta#Q4
👷♂️Tekis oppoq devorlar.
Bu imkonsiz dersiz.
Ammo tajribali ustalar KNAUF-Rotband Pasta Profi binoning ichki yuzalari uchun eng yaxshi yakuniy shpaklyovka ekanligini bilishadi.👌
U quyidagi ajoyib xususiyatlarga ega:
◻️Yuqori adgeziya va elastiklik
◻️Tekis va mustahkam sirt
◻️Yuqori darajadagi oqlik
◻️Koʻp marta muzlagandan soʻng ham foydalanish mumkin
◻️Eng muhimi esa, u darhol foydalanishga tayyor boʻladi.
Bularning barchasi mazkur mahsulotni yuza sifati boʻyicha Q4 (ideal yupqa qatlamli sirtni shpaklyovka qilish) darajasiga erishish uchun ajoyib yechimga aylantiradi.👍
Bu esa, oʻz navbatida, yarim yaltiroq boʻyoq yoki venetsiya suvogʻi kabi yakuniy pardozlash ishlarini bajarishga imkon beradi.
Ichki yuzalarga ishlov berish uchun foydalaning.
☝️KNAUF qoplamaning ulangan joylarini yopish uchun ishlatmang, buning uchun KNAUF-Fugen bor.
Sifatli qurilish materiallaridan foydalaning.
KNAUFʼdan foydalaning.
- - - - -
👷♂️Гладкие белые стены.
Невозможно - скажете вы.
Но опытный мастер знает, что КНАУФ-Ротбанд Паста Профи является лучшей финишной шпаклевкой для поверхностей внутри помещений.👌
Она обладает такими крутыми свойствами, как:
◻️Высокая адгезия и пластичность
◻️Гладкая и прочная поверхность
◻️Повышенная белизна
◻️Возможность многократного замораживания
◻️А главное, она сразу готова к использованию.
И все это делает данный продукт отличным решением для достижения уровня качества поверхности Q4 (идеального тонкослойного шпаклевания поверхности)👍
А это, в свою очередь, позволяет такие финишные покрытия как полуглянцевая краска или
венецианская штукатурка.
Используйте для внутренних работ.
☝️Не используйте для заделки стыков КНАУФ-листов, для этого есть КНАУФ-Фуген.
Используйте качественные стройматериалы.
Используйте КНАУФ.
#knaufuzbekistan#fugen#Rotbandpasta#Q4
👷♀️Ushbu mahsulot tufayli yuza quyidagi singari yuqori talab qoʻyiladigan yakuniy qoplamlarga tayyor boʻladi:
▫️metallashgan oboylar;
▫️yarimyaltiroq boʻyoq;
▫️venetsiancha suvoq;
▫️lak/sadaf qoplama.
Va bu hazil emas.
Bu – Q4 yuza sifati.
KNAUF-Rotband Pasta Profi – vinil asosidagi tayyor pastasimon yakuniy shpaklyovka.👍
Bagʻoyatda oppoq rang, oshirilgan adgeziyaga ega va yoriqlarga bardoshlidir.
Yuzani yupqa va shilib shpaklyovkalash ishlari uchun ayni muddao.
Yuqori qayishqoqligi tufayli esa oson tekislanadi va mayda notekisliklarni yaxshi toʻldiradi.👌
Bundan tashqari, nihoyatda oppoq boʻlgani sababli, koler qoʻshilib, dekorativ yupqa qatlam surtish uchun ham ishlatilishi mumkin.
5 ta siklgacha muzlash / erishga (shikastlanmagan/muhri ochilmagan qadoqda) ruxsat etiladi. Muzlab qolganda eritish jarayonini tezlatish mumkin emas, erib boʻlgandan keyin yaxshilab aralashtirish zarur.
Qoʻlda va qurilmada surtish mumkin.
Qurilma bilan surtishda yuqori bosimli PFT SWING Airless havosiz nasosidan foydalanish tavsiya etiladi.👍
Texnik xususiyatlari
▫️Sarfi: 0,48 kg/m2 (qatlam 0,3 mm)
▫️Qatlam qalinligi: 0,2–2 mm gacha
▫️Zarra oʻlchami (oʻrta): 25 mkm
▫️Ishchi harorat: 10-30°С
▫️Qurish vaqti 1 mm: 24 soat
▫️Saqlash muddati: 12 oy
Bino ichkarisida bajariladigan ishlar uchun.☝️
Sifatli materiallardan foydalaning.
KNAUFdan foydalaning.
- - - - -
👷♀️Продукт, благодаря которому поверхность будет готова к таким требовательным к основанию финишным покрытиям, как:
▫️металлизированные обои;
▫️полуглянцевая краска;
▫️венецианская штукатурка;
▫️лаковые/перламутровые покрытия.
А это не шутки.
Это - качество поверхности Q4.
КНАУФ-Ротбанд Паста Профи - готовая пастообразная финишная шпаклевка на виниловой основе.👍
Обладает повышенной белизной, адгезией и трещиностойкостью.
Идеальна для тонкослойного шпаклевания поверхости, шпаклевания на сдир.
А благодаря высокой пластичности легко разравнивается и отлично заполняет мелкие неровности.👌
Кроме того, благодаря высокой белизне может быть заколерована и применяться для тонкослойного декоративного нанесения.
Допускается (в неповрежденной/нераспечатанной упаковке) замораживание / оттаивание до 5 циклов.
При замерзании не ускорять оттаивание, а после оттаивания тщательно перемешать.
Наносится как ручным, так и машинным способом.
Для машинного рекомендуется применять безвоздушный насос высокого давления PFT SWING Airless.👍
Технические характеристики
▫️Расход: 0,48 кг/м2 (слой 0,3 мм)
▫️Толщина слоя: до 0,2–2 мм
▫️Размер частиц (средний): 25 мкм
▫️Рабочая температура: 10-30°С
▫️Время высыхания 1 мм: 24 часа
▫️Срок хранения: 12 мес.
Для внутренних работ.
Используйте качественные материалы.
Используйте КНАУФ.
#knaufzbekistan#rotbandpastaprofi#q4
👷♀️Ushbu mahsulot tufayli yuza quyidagi singari yuqori talab qoʻyiladigan yakuniy qoplamlarga tayyor boʻladi:
▫️metallashgan oboylar;
▫️yarimyaltiroq boʻyoq;
▫️venetsiancha suvoq;
▫️lak/sadaf qoplama.
Va bu hazil emas.
Bu – Q4 yuza sifati.
KNAUF-Rotband Pasta Profi – vinil asosidagi tayyor pastasimon yakuniy shpaklyovka.👍
Bagʻoyatda oppoq rang, oshirilgan adgeziyaga ega va yoriqlarga bardoshlidir.
Yuzani yupqa va shilib shpaklyovkalash ishlari uchun ayni muddao.
Yuqori qayishqoqligi tufayli esa oson tekislanadi va mayda notekisliklarni yaxshi toʻldiradi.👌
Bundan tashqari, nihoyatda oppoq boʻlgani sababli, koler qoʻshilib, dekorativ yupqa qatlam surtish uchun ham ishlatilishi mumkin.
5 ta siklgacha muzlash / erishga (shikastlanmagan/muhri ochilmagan qadoqda) ruxsat etiladi. Muzlab qolganda eritish jarayonini tezlatish mumkin emas, erib boʻlgandan keyin yaxshilab aralashtirish zarur.
Qoʻlda va qurilmada surtish mumkin.
Qurilma bilan surtishda yuqori bosimli PFT SWING Airless havosiz nasosidan foydalanish tavsiya etiladi.👍
Texnik xususiyatlari
▫️Sarfi: 0,48 kg/m2 (qatlam 0,3 mm)
▫️Qatlam qalinligi: 0,2–2 mm gacha
▫️Zarra oʻlchami (oʻrta): 25 mkm
▫️Ishchi harorat: 10-30°С
▫️Qurish vaqti 1 mm: 24 soat
▫️Saqlash muddati: 12 oy
Bino ichkarisida bajariladigan ishlar uchun.☝️
Sifatli materiallardan foydalaning.
KNAUFdan foydalaning.
- - - - -
👷♀️Продукт, благодаря которому поверхность будет готова к таким требовательным к основанию финишным покрытиям, как:
▫️металлизированные обои;
▫️полуглянцевая краска;
▫️венецианская штукатурка;
▫️лаковые/перламутровые покрытия.
А это не шутки.
Это - качество поверхности Q4.
КНАУФ-Ротбанд Паста Профи - готовая пастообразная финишная шпаклевка на виниловой основе.👍
Обладает повышенной белизной, адгезией и трещиностойкостью.
Идеальна для тонкослойного шпаклевания поверхости, шпаклевания на сдир.
А благодаря высокой пластичности легко разравнивается и отлично заполняет мелкие неровности.👌
Кроме того, благодаря высокой белизне может быть заколерована и применяться для тонкослойного декоративного нанесения.
Допускается (в неповрежденной/нераспечатанной упаковке) замораживание / оттаивание до 5 циклов.
При замерзании не ускорять оттаивание, а после оттаивания тщательно перемешать.
Наносится как ручным, так и машинным способом.
Для машинного рекомендуется применять безвоздушный насос высокого давления PFT SWING Airless.👍
Технические характеристики
▫️Расход: 0,48 кг/м2 (слой 0,3 мм)
▫️Толщина слоя: до 0,2–2 мм
▫️Размер частиц (средний): 25 мкм
▫️Рабочая температура: 10-30°С
▫️Время высыхания 1 мм: 24 часа
▫️Срок хранения: 12 мес.
Для внутренних работ.
Используйте качественные материалы.
Используйте КНАУФ.
#knaufzbekistan#rotbandpastaprofi#q4
Hyperliquid Surges in Onchain Perpetuals
Hyperliquid increases market share of onchain perpetuals from 28% to over 50% in Q4, marking significant dominance in the sector. Full details here: Leviathan News
#Hyperliquid#Onchain#Perpetuals#Crypto#MarketShare#Trading#Finance#Q4#Blockchain#ATH#Solana#Volume#Growth#Innovation#LeviathanNews#CryptoNews#Tech#Investment#Market#Decentralization#VC#AI