Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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 charchagansiz va uyda yoki idorada sukunatdan bahra olishni xohlayapsiz, ammo qo'shni xonalardagi shovqin devorlardan shunday o’tmoqdaki, bu devorlar yo’qdek go'yo.
☝️Ovoz izolatsiyasi (56 dBgacha) va olovga chidamliligi (EI qiymati 90 gacha bo’lgan olovga chidamli GQP-DF KNAUF-qoplamalar) bo’yicha yuqori talablarga javob beradigan universal qurilma – KNAUF S 112 pardevorlari sizning holatingizda eng yaxshi yechimdir. Ushbu tizimni yig'ish tezligi vaqtni sezilarli darajada tejashga va yanada tezroq yakuniy ishlovni boshlashga imkon beradi.
S 112 tarkibiga quyidagilar kiradi:
(1) KNAUF-qoplama (GQP-A (GKQ), GQP-H2 (GKQN), GQP-DF (GKQO), GQP-DFH2 (GKQNO)) 12,5 mm
(2) KNAUF profil yo’naltiruvchi PY 50 × 40 (75 × 40, 100 × 40)
(3) KNAUF profil ustun PU 50 × 50 (75 × 50, 100 × 50)
(4) Mineral paxtali tovush izolyatsiyasi AkustiKNAUF (KNAUF-Insuleyshn materiallari)
(5a) KNAUF burama mixi TN 25
(5b) KNAUF burama mixi TN 35
(6) KNAUF-Fugen shpaklovkasi (tutashish choklarini yopish uchun)
(7) KNAUF-Kurt (tasma armaturalovchi)
(8) KNAUF-Dyubel-mix 6 × 40
(9) KNAUF-Dihtungsband- (tasma zichlovchi)
(10) KNAUF-Tifengrund gruntovkasi
(11) KNAUF- profil BH (burchak himoyasi), perforatsiyalangan
(12) KNAUF-Trennfiks (tasma ajratuvchi)
Devorlaringiz uchun KNAUF kompleks yechimlari.👌
- - - - -
👷♂️Вы устаете и хотели бы насладиться тишиной дома или в офисе, но стены передают звук из смежных помещений так, будто их совсем нет.
☝️Универсальная конструкция, способная обеспечить высокие требования по звукоизоляции (до 56 дБ) и огнестойкости (до EI 90 с применением огнестойких КНАУФ-листов ГСП- DF),
перегородка КНАУФ С 112 является отличным решением для вашего случая. Скорость сборки данной системы позволит значительно сэкономить время и максимально быстро приступить к финишной отделке.
В состав С 112 входят:
(1) КНАУФ-лист (ГСП-A(ГКЛ), ГСП-H2(ГКЛВ), ГСП-DF(ГКЛО, ГСП-DFH2 (ГКЛВО)) 12,5 мм
(2) КНАУФ-профиль направляющий ПН 50×40 (75×40, 100×40)
(3) КНАУФ-профиль стоечный ПС 50×50 (75×50, 100×50)
(4) Минераловатная звукоизоляция АкустиКНАУФ (материал от КНАУФ-Инсулейшн)
(5а) КНАУФ-шуруп прокалывающий TN 25
(5б) КНАУФ-шуруп прокалывающий TN 35
(6) Шпаклевка КНАУФ-Фуген(для заделки стыков)
(7) КНАУФ-Курт (лента армирующая)
(8) КНАУФ-Дюбель-гвоздь 6×40
(9) КНАУФ-Дихтунгсбанд- (лента уплотнительная)
(10) Грунтовка КНАУФ-Тифенгрунд
(11) КНАУФ-профиль ПУ(углозащитный)перфорированный
(12) КНАУФ-Треннфикс (лента разделительная)
Комплексные решения КНАУФ для ваших стен.👌
Сайт|Facebook|Instagram
#knaufuzbekistan#komplekttizimi#s112
Sizning devoringiz tekis boʻlmagan yuzali gʻisht yoki beton devormi?
🧐Joyingiz kam, ustiga ustak mablagʻingiz ham cheklanganmi?
Bizda siz uchun ajoyib yechim bor.👌
KNAUF-Perlfix – bu tutib turuvchi karkasni oʻrnatmasdan KNAUF- qoplamalari yordamida egri devorlarni tekislash imkonini beradigan gips uchun moʻljallangan montaj yelimidir. Bu devorlar sirtini qoplashda xona maydonining kamayishining oldini olishga katta yordam beradi. (KNAUF S 611 komplekt tizimi)
Ekologik sof tabiiy mineraldan (gips) tayyorlangan, yaʼni sizning sogʻligʻingiz uchun xavfsizdir.🍀
Binoning ichki qismini taʼmirlash uchun ishlatiladi.
Sifatli materiallardan foydalaning.
KNAUFʼdan foydalaning.
- - - - -
👷♂️У вас есть кирпичная или бетонная стена с неровной поверхностью?
🧐Мало места, да и бюджет ограничен?
А у нас есть отличное решение для вас. 👌
КНАУФ-Перлфикс клей гипсовый монтажный, позволяет выровнять кривые стены с помощью КНАУФ-листов без установки несущего каркаса. Это здорово помогает снизить потери площади при облицовке стен. (Комплектная система КНАУФ С 611)
Изготовлен из экологически чистого природного минерала (гипса), то есть, безопасен для вашего здоровья. 🍀
Применяется для внутренних работ.
Используйте качественные материалы.
Используйте КНАУФ.
YouTube
Instagram
Facebook
#knaufuzbekistan#perlfix#c611#komplekttizimi
👷♂️Sizning devoringiz tekis boʻlmagan yuzali gʻisht yoki beton devormi?
🧐Joyingiz kam, ustiga ustak mablagʻingiz ham cheklanganmi?
Bizda siz uchun ajoyib yechim bor.👌
KNAUF-Perlfix – bu tutib turuvchi karkasni oʻrnatmasdan KNAUF- qoplamalari yordamida egri devorlarni tekislash imkonini beradigan gips uchun moʻljallangan montaj yelimidir. Bu devorlar sirtini qoplashda xona maydonining kamayishining oldini olishga katta yordam beradi. (KNAUF S 611 komplekt tizimi)
Ekologik sof tabiiy mineraldan (gips) tayyorlangan, yaʼni sizning sogʻligʻingiz uchun xavfsizdir.🍀
Binoning ichki qismini taʼmirlash uchun ishlatiladi.
- - - - -
👷♂️У вас есть кирпичная или бетонная стена с неровной поверхностью?
🧐Мало места да и бюджет ограничен?
А у нас есть отличное решение для вас.👌
КНАУФ-Перлфикс клей гипсовый монтажный, позволяет выровнять кривые стены с помощью КНАУФ-листов без установки несущего каркаса. Это здорово помогает снизить потери площади при облицовке стен. (Комплектная система КНАУФ С 611)
Изготовлен из экологически чистого природного минерала (гипса), то есть, безопасен для вашего здоровья.🍀
Применяется для внутренних работ.
Сайт| Facebook|Instagram
#knaufuzbekistan#perlfix#c611#komplekttizimi
👷♂️P 112 komplekt tizimi – bu metall sinch (karkas)ga ikki satxli shift oʻrnatish uchun moʻljallangan va puxtalik bilan tanlab olingan materiallar majmuasi.
🧐Bu tizimning oʻziga xosligi shundaki, osma shift sinchining asosiy shiftga maxsus osgichlar yordamida mahkamlangan asosiy profillari bilan KNAUF-qoplama gipskartonlari mahkamlanadigan yuk koʻtaruvchi profillar turli balandlikda joylashgan boʻladi.
☝️Jiddiy sifat nazorati, zamonaviy texnologiyalar KNAUF shift tizimlari uzoq muddat xizmat qilishining kafolatidir.
💪P 112 bu gʻishtli va blokli inshootlarga mos keladigan, qattiq va mustaqkam konstruksiyadir. Nonius-osma osgichlari uzaytirgich va ulagich bilan birgalikda shiftning balandligini 2 metrgacha oraliqda moslashtirishga imkoniyat beradi. Sizda ventilyatsiya va kanalizatsiya tarmoqlarini ortiqcha koʻzlardan yashirishning yaxshigina imkoniyati paydo boʻladi.
👌Inson uchun qulay va yoqimli mikroiqlim ekologik toza material hisoblangan KNAUF-qoplama tufayli taʼminlanadi. U dyeyarli barcha KNAUF komplekt tizimlarining negizi hisoblanadi.
KNAUF shift tizimlari, ishonchli va xavfsizdir. “Hoʻl” jarayonlarning yoʻqligi ish unumdorligini sezilarli darajada oshiradi, bu esa mazkur tizimning yana bir afzalligidir. 👍
👉Tizim tarkibiga quyidagilar kiradi:
KNAUF- qoplama 12,5 mm
KNAUF-profil PSh 60x27
Profillarni uzaytirgich
Ikki satxli tutashtirgich
Toʻgʻri osma (podves) (Osma qisqich va tyaga bilan, Nonius-osma yigʻilgan holatda)
TN 25 Burama mixi
Metal Anker pona
KNAUF-Kurt (Armaturalovchi tasma)
KNAUF-Fugen (Choklarni suvash uchun pardozlash qorishmasi)
KNAUF-Tifengrund (Gruntovka)
KNAUF-Trennfiks (Ajratuvchi tasma)
KNAUF-profil PY 28x27
LN 9,5 Burama mixi
Dyubel-mix 6×40
Sizning shiftlaringiz uchun KNAUF kompleks yechimlari.😊
- - - -
👷♂️Комплектная система П 112 – это комплекс тщательно подобранных материалов, с помощью которых собирается двухуровневый потолок на металлическом каркасе.
🧐Отличительной особенностью этой системы является то, что основные профили каркаса подвесного потолка, закрепленные с использованием подвесов к базовому потолку, и несущие профили, к которым крепится гипсокартонный КНАУФ-лист, расположены на разных уровнях .
☝️Строгий контроль качества, современные технологии, являются гарантом долгосрочности потолочных систем КНАУФ.
💪П 112 это жесткая и крепкая конструкция, хорошо подходящая для кирпичных и блочных строений. Нониус-подвес в тандеме с удлинителем и соединителем дают возможность варьировать высоту потолка до 2м. У Вас появится отличная возможность скрыть вентиляционные или канализационные трубы от лишних глаз.
👌Благоприятный для человека микроклимат обеспечивается благодаря КНАУФ-листу, экологически чистому материалу, который является основой основ практически всех комплектных систем КНАУФ.
Потолочные системы КНАУФ надежны и безопасны. А исключение «мокрых» процессов значительно увеличит производительность труда, что является еще одним преимуществом данной системы.👍
👉В состав системы входят:
КНАУФ- лист 12,5 мм
КНАУФ-профиль ПП 60x27
Удлинитель профилей
Соединитель двухуровневый
Прямой подвес (Подвес с зажимом и тягой, Нониус-подвес в сборе)
Шуруп TN 25
Анкер клин металлический
КНАУФ-Курт (Армирующая лента)
КНАУФ-Фуген (шпаклёвочная смесь для заделки швов)
КНАУФ-Тифенгрунд (Грунтовка)
КНАУФ-Треннфикс (Разделительная лента)
КНАУФ-профиль ПН 28x27
Шуруп LN 9,5
Дюбель-гвоздь 6×40
Комплексные решения КНАУФ для ваших потолков.😊
Сайт|Facebook|Instagram
#knaufuzbekistan#п112#p112
#комплектнаясистема#komplekttizimi
👷♂️Agar obyektdagi yoki uydagi devorlar anchagina notekis boʻlsa, suvoq qilish natijani bermaydi, asosni tekislash uchun esa odamni koʻp pul sarflagisi kelmaydi. Bunday holatda tayanch devorga mahkamlangan metall karkasdagi KNAUF-qoplamalaridan iborat bir qavatli yoki ikki qavatli qoplamalar – S 623 komplekt tizimi eng yaxshi yechim boʻladi.
Batafsil ma'lumot 👉 havola orqali.
- - - - -
👷♂️Если стены на объекте или дома имеют большие неровности, оштукатуривание не дает желаемых результатов, а тратить уйму денег на выравнивание основания совсем не хочется, отличным решением будет однослойная или двухслойная облицовка из КНАУФ-листов на металлическом каркасе, закрепленном на базовой стене, Комплектная система С 623.
Подробнее по 👉ссылке.
Сайт | Facebook | Instagram | Knauf-bot
#knaufuzbekistan#s623#profil#gqp#tn25#tn35
#komplekttizimi#c623#профиль#гипсокартон