Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
10 городов, 3 страны и сильное партнёрство: спасибо за D+A Tour 25/26 ❤️
Региональная программа D+A Tour от MosBuild в этом сезоне стала масштабным профессиональным маршрутом по России и странам СНГ. Мы объединили 10 городов — Санкт-Петербург, Казань, Нижний Новгород, Минск, Новосибирск, Красноярск, Екатеринбург, Алматы, Краснодар и Ростов-на-Дону. Команда выставки преодолела тысячи километров, чтобы создать пространство для профессионального диалога, вдохновения и развития архитектурно-дизайнерского сообщества.
Каждая встреча D+A Tour — это новые знакомства, живые дискуссии, обмен опытом и практикой, актуальные тренды и реальные кейсы. Этот масштабный путь был бы невозможен без поддержки наших партнёров!
Благодарим партнёров программы:AM Group, Kerama Marazzi, Manders, Espocada, Dea Design, MercuryStone, Boca Room, Императорский фарфоровый завод, I-Design Awards, VEKA Rus, Алютех, Tanu, Студию 40. И наших информационных партнёров Hi home и Архдиалог.
Особую благодарность выражаем генеральному партнёру D+A Tour — Knauf — за стратегическую поддержку и вклад в развитие отрасли в регионах.
Спасибо за доверие, вовлечённость и готовность вместе развивать профессиональное сообщество!
#datour#mosbuild
Фотографии с мероприятий D+A Tour в Алматы уже доступны на MosBuild Connect
Урбан-тур по новым жилым объектам города, звездная деловая программа — смотрите, как прошел D+A Tour в Казахстане!
➖Урбан-тур — https://clck.ru/3Qc7Jd
➖Деловая программа — https://clck.ru/3Qc7Md и https://clck.ru/3Qc7Nv
Фотографии из других городов региональной программы вы также можете найти в разделе «Контент» онлайн-сообщества MosBuild Connect
#datour#mosbuild
D+A Tour в Алматы: вдохновляющий диалог об архитектуре и дизайне состоялся
20–21 ноября прошёл яркий D+A Tour. Участники погрузились в насыщенную программу: от эксклюзивного Урбан-тура от партнеров мероприятия «Студии 40» до выступлений ведущих экспертов отрасли
Первый день тура включил посещение ЖК Dream City Family, ЖК Verdi и ЖК Dostyq 300, где гости смогли оценить современные архитектурные решения и градостроительные подходы
Деловая часть программы прошла в пространствеImagine. Слушателей ждали лекции о главных тенденциях в дизайне, развитии студий, готовых интерьерных решениях и роли технологий в архитектуре.Средиспециальных гостей D+A Tour — амбассадоры MosBuild Михаил Шапошников и Диана Балашова, а также представители экосистемы TANU, партнеров региональной программы в Алматы
Событие завершилось вдохновляющим интервью и неформальным общением участников — D+A Tour вновь подтвердил свою роль как международной площадки для обмена опытом, идеями и новыми профессиональными связями
До встречи в следующем городе!
#datour#mosbuild
Перед тем как D+A Tour пройдет на юге России, давайте вспомним как региональная программа прошла в Новосибирске!
Все фото- и видеоматериалы с мероприятия уже доступны
в разделе «Контент» онлайн-сообщества MosBuild Connect
#mosbuild#datour
Самые яркие кадры с D+A Tour в Новосибирске
Благодарим партнёров D+A Tour: MercuryStone, AM-Group, DEA Design, Aeterna, Little Greene, KERAMA MARAZZI, Espocada, Boca Room, Императорский фарфоровый завод, КНАУФ, Veka Rus, Коллекция новостроек, Open Village Сибирь
До встречи в Ростове-на-Дону!
#datour#mosbuild
Вот и подошел к концу D+A Tour в Минске. Подведем итоги!
Региональная программа стартовала 18 сентября с экскурсии на производственные площадки группы компаний «АЛЮТЕХ». Участники познакомились с основными этапами производства: от алюминиевых профильных систем до роллетных и воротных решений. Также они посетили инженерно-технический центр компании, где представлены шоурум, учебный центр и испытательный комплекс. Завершилась экскурсия вручением памятных сувениров.
19 сентября прошла деловая программа D+A Tour, модератором которой стал Алексей Дорожкин — редакционный директор издания «Интерьер+дизайн» и амбассадор MosBuild.
С приветственным словом на сцену вышел Яков Сыромятников, директор выставки MosBuild.
В течение дня перед гостями выступили эксперты и лидеры индустрии:
➖Алексей Дорожкин рассказал о том, почему эмоции становятся важнее дизайна и как меняются запросы клиентов
➖ Анастасия Голова и Олеся Горбунова из Espocada обсудили, почему интерьерные капсулы становятся must-have решением
➖Зинаида Марголина (Modus Ceramica) представила новую коллекцию Morocco
➖ Диана Балашова поделилась стратегиями построения карьеры и вдохновляющими кейсами
➖ Сергей Свиридов из ГК «АЛЮТЕХ» рассказал о современных архитектурных решениях компании
➖Марк Гурда (ZROBIM architects) выступил с темой «Дом в современном стиле»
Благодарим партнёров мероприятия: MercuryStone, AM-Group, DEA Design, Aeterna, Little Greene, KERAMA MARAZZI, Espocada, ГК «АЛЮТЕХ», Boca Room, Императорский фарфоровый завод
До встречи в следующем городе!
#datour#mosbuild
Каковы ваши впечатления от первого дня D+A Tour в Санкт-Петербурге? Делитесь в комментариях.
И не забудьте посмотреть программу на завтра — впереди ещё много интересного!
#datour#mosbuild
1 день до старта D+A Tour в Санкт-Петербурге!
Начинаем наш тур с экскурсии на Императорский фарфоровый завод, который выступает партнером региональной программы MosBuild. Приготовьтесь к вдохновляющему погружению в искусство фарфора!
Напоминаем, что всем, кто подтвердил присутствие, на электронную почту было направлено время начала экскурсии. Из-за большого количества регистраций, экскурсии продлятся 2 дня — утром 28 и 29 августа.
До скорой встречи на D+A Tour!
#datour#mosbuild
До региональной программы D+A Tour в Санкт-Петербурге остаются считанные дни! Сохраняйте расписание наших встреч, чтобы не пропустить всё самое интересноe:
📌 28 августа
11.00—12.00
➖ Экскурсия на Императорский фарфоровый завод
Адрес: Пр. Обуховской обороны, 151
Экскурсии будут проходить каждые 15 минут. Точное время начала для разных групп будет дополнительно выслано зарегистрировавшимся.
📌 29 августа
13.00—18.00
➖ Деловая программа в особняке «Пальма». Выступление Дианы Балашовой и местных дизайнеров
Адрес: Пер. Пирогова, 18
Во время деловой программы выступят амбассадоры MosBuild и партнеры региональной программы:
Тема: тренды в дизайне интерьеров на ближайшие 3 года.
Спикер: Полина Кузурман — арт-директор бюро LINES, создатель светильника Shell by Mantra, более 10-и лет прикладного опыта в дизайне интерьеров.
Тема: как привлекать клиентов контентом в 2025 на примере нового русского стиля.
Спикер: Владислав Седов — основатель бюро дизайна и архитектуры LINES.
Тема: успешный старт в дизайне интерьеров: стратегии построения карьеры и источники вдохновения.
Спикер:Диана Балашова — дизайнер интерьеров.
Тема: создание живых интерьеров.
Спикер:Михаил Курносов — архитектор, интерьерный и предметный дизайнер. Основатель и дизайнер студии ZAPAZUHA. Амбассадор AM Group.
А также выступления других спикеров и партнеров.
18:00
➖Сбор гостей на афтерпати в новом шоуруме Boca Room Михаила Шапошникова
Адрес: Пр. Медиков, 4к1
До встречи в Санкт-Петербурге!
#datour#mosbuild
Санкт-Петербург — первая остановка регионального тура MosBuild!
Что вас ждёт:
28.08 — экскурсия на Императорский фарфоровый завод. Погрузимся в традиции, эстетику и узнаем секреты производства изделий.
29.08 — встреча для дизайнеров в центре города со звездным гостем — Дианой Балашовой. Отличный повод завести новые профессиональные знакомства!
Финал вечера — афтерпати в салоне Boca Room с Михаилом Шапошниковым. Поделимся впечатлениями о мероприятии и потанцуем!
➖Регистрируйтесь на мероприятие по ссылке: https://clck.ru/3NUGNt
#datour#mosbuild