Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
💫 Новая глава в инновациях и дизайне!
На Milan Design Week 2025 ASUS представит уникальное сочетание передовых технологий, премиальных материалов и эмоционального дизайна.
Откройте для себя будущее технологий на выставке ASUS Design You Can Feel.
📍 Galleria Meravigli, Милан
📅 8–13 апреля 2025
#MDW2025#ASUSZenbook
✨ Выставка MDW2025 – место, где элегантная итальянская архитектура встречается с передовыми технологиями ASUS.
🤩 Что может быть лучше?
#MDW2025#ASUS#Zenbook
Дизайн — это не просто то, что ты видишь. Это то, что ты чувствуешь.✨
Мировой тур #DesignYouCanFeel добрался до главного дизайнерского события года. Присоединяйся к ASUS на Milan Design Week 2025!
📍 Galleria Meravigli, Милан
📅 8–13 апреля 2025.
#MDW2025#ASUSZenbook#DesignYouCanFeel
Хэй гайз!
День 3 недели дизайна! Куда бежать?
План на сегодня: гулять по городу, штурмовать шоурумы и выставки! Проблема одна - их слишком много 💿
Засыпаю и просыпаюсь с телефоном в руках, скриню все топовые локации... Вот утреннее инспо 🫀
■ Если бы у вас был только один день в Милане - куда бы пошли?))
■ И главный вопрос: Продолжаем кружочко-марафон?💿
#милан#неделяДизайна#milandesignweek#MDW2025
P.S.
Хэй гайз!
В этом году тренды проявились особенно ярко! Эти цвета и материалы были буквально в каждом шоуруме, на каждой выставке и стенде Salone del Mobile 🖼️
Но признаюсь: я бы не была столь внимательна к этим закономерностям, если бы не Кристина - моя однокурсница и эксперт по колор-дизайну 🎨 Именно она дала мне задание зафиксировать все ключевые тенденции для своего исследования 📕
■ Это заставляет задуматься: мы видим только то, что сознательно ищем?) Ваше мнение в комментах 👁️🗨️
#Милан#Цвет#Тренды2025#milanDesignWeek#mdw2025#неделяДизайна
*Надпись на одной из выставок зацепила: "уникальные предметы для тех, кто ищет экстраординарное в дизайне" ❤️
#editorsnotes Следим за Alcova особенно пристально, чтобы не упустить новые имена и интересные решения. Признаться честно, смена локаций — очень важный элемент в постоянной гонке Недели дизайна. Если в прошлом году, вау-эффект достигался в первую очередь открытием новых неизведанных мест — легендарных вилл, то в этом — удивлять нужно было еще и составом участников. Начнем с нашего личного топа, с одной из локаций Alcova — Виллы Борсани.
Японский бренд посуды Noritake показал в одном пространстве все свои коллаборации с современными дизайнерами, среди которых Марк Ньюсон, Ябу Пушельберг и Фэй Тугуд. Сочные розы новой коллекции с Фэй Тугуд заняли центральное место — дизайнер изучила архивы бренда и вдохновилась предметами 1930-х годов, привнеся в них современное звучание.
На кухне виллы Борсани встретили Аню Наумову — соосновательницу галереи Sample и ярмарки blazar, а также Орхана Гусейнова, креативного директора бренда родом из Азербайджана Chelebi, — с которым она приехала на неделю дизайна. Показывают коллаборацию с испанским дизайнеромНатальей Ортега — коллекцию предметов декора Plaite, в которой переизобретается искусство плетения в разных формах и материалах.
Дизайнер из Нью-Йорка Уитни Кригер с брендом Soft Witness представил предметы, которые создаются на двух континентах — в США и в Италии, где для Уитни работают флорентийские и венецианские артизаны.
Японцы AtMa сделали серию стульев, переработав элементы дизайн-иконы — стула J39 датского дизайнера Берге Могенсена.
Дальше переходим в новую локацию Alcova — полуразрушенную SINIA. Здесь развернулся бренд Ranieri, показав инсталляцию из предметов, выполненных из вулканической лавы, — главное ноу-хау бренда. Сопровождается инсталляция саунд-дизайном, построенным на низких частотах и глубоких вибрациях, которые вызывают ассоциации с бурлящей магмой под земной корой.
Вилла Багатти–Вальсекки бурлит молодыми дизайнерами со всего мира, а мы вновь отмечаем присутствие наших героев — дизайн-дуэта Touch with Eyes и коллектива SKNYPL. Еще одна новая локация этого года — теплица в саду виллы. В ней в том числе разместилась инсталляция Ghost Orchid от студии Marcin Rusak — 3D-печатные скульптуры из PLA, вдохновленные процессом селекции цветов.
Подробнее о том, как проходит Alcova 2025, читайте в нашем большом материале на сайте.
#SalonedelMobileMilano#SalonedelMobileMilano2025#MilanoDesignWeek#MDW2025#дизайн
Хэй гайз!
Миланская неделя дизайна в самом разгаре!
🗿 День 1: Выжили!
Вчера посетили выставку Superstudio - море вдохновения! 💋 А вечером ужинали на крыше Casa Brera - новый must-visit отель! Прям как с пинтерест борда 😀 Подробный фотоотчёт будет, как только появится свободная секунда в этом вихре дизайна!
🦋 Ну а сегодня - уже мчим на Salone del Mobile!
Отметила на карте все топовые шоурумы (каждый пин - отдельная история). Будет жарко!
😀 Записать вам кружочки с локации?)
#Милан#неделяДизайна#milanDesignWeek#MDW2025#SaloneDelMobile#superStudio
Хэй гайз!
Тренд на коллаборации модных домов с дизайном набирает обороты 💋
В последние часы моего путешествия по Милану успела заглянуть на выставку Hermès🤩
Больше всего впечатлила концепция - "чтобы создать объект, нужна коробка"🎁
Белые кубы, парящие в пространстве, отбрасывают цветные блики. На секунду я испугалась - неужели это и есть главный экспонат? Но нет! Обойдя кубы, замечаешь вырезы, а внутри...
Мои фавориты:
💔Яркие лакированные столики со смещённой по оси столешницей из японского кедра (техника суги). Очень эксцентрично! Дизайнер Tomás Alonso играет с балансом между традиционными техниками и современными материалами.
☕️Сервиз из каолина с ручной росписью художника Nigel Peake. Нежные и яркие фризы можно комбинировать бесконечно! Самое интересное — геометрические мотивы вдохновлены музыкальными ритмами.
Заметили? Этот же паттерн повторяется во дворе перед входом: мини-кафе и фотозона не оставили равнодушными даже эту милую парочку на последнем фото :)
Почему это круто?
Hermès делает ставку на узнаваемый минимализм и сложную ручную работу. Айдентика бренда в деталях!
■ Какие модные бренды, по-вашему, делают лучший дизайн для дома?
■ Кто ещё НЕ делает коллекции для дома, но вам бы очень хотелось? Можем замутить свою версию с ИИ ;)
#Милан#неделяДизайна#MilanDesignWeek#Hermès#MDW2025#Мода
Хэй гайз!
Продолжаю делиться впечатлениями с Euroluce — и вот мой абсолютный фаворит этого года...
Aqua Creations! 🤍
Впервые увидела их работы — будто попала в страну чудес! 🐈⬛ Летающие тарелки, светящиеся луковицы, пушистые грибочки (или медузы?), кресла-мозги... Дизайн, вдохновлённый природой - это настоящая магия игры света и формы🍄
Основал бренд израильский фотограф Альби Серати вместе с женой-скульптором еще в 1992ом году. Альби с детства заворожён игрой света — сначала в фотографии, потом в дизайне 😍Его работы — не просто функциональные вещи, а эмоций!
■ Как думаете: какие чувства должен пробуждать хороший дизайн?
#Милан#Свет#MilanDesignWeek#MDW2025#Euroluce#SaloneDelMobile#aquaCreations
Хэй гайз!
Возвращаемся в Милан на неделю дизайна... о да! Контентом оттуда я буду делиться ещё долго. Этого вдохновения хватит на целый год))
Уже рассказала вам про два топовых бренда освещения — Ingo Maurer и Aqua Creations. Сегодня делюсь ещё одним фаворитом с выставки Euroluce – мексиканским David Pompa.
■ В основе их философии — глубокая связь с природой, традиционными ремёслами и принципами устойчивого развития🌎
Каждый светильник начинается с материала. Чёрная глина, вулканический камень, плетёная пальма, переработанное стекло... всё добывается и обрабатывается с уважением к природе и местным сообществам ❤️ Можно на пару часов залипнуть на сайте, изучая историю каждого материала - советую заглянуть хотя бы ради завораживающих фотографий с ремесленниками 📸
Бренд сознательно избегает машинной безупречности — здесь ценят следы человеческих рук, естественные неровности и живые текстуры🖐 Тем не менее за кажущейся простотой скрываются инновационные технологии - смотрите первое видео!
■ Идеальный баланс между мексиканскими традициями и современным дизайном 🌜 Как вам такой подход?)
#Милан#milanDesignWeek#mdw2025#DavidPompa#Euroluce#свет#устойчивоеразвитие
Euroluce 2025! Погнали!!!
Перед посещением друзья дали мне забавное задание — найти на выставке серфингистов📷 Задача оказалась не из простых! Вместо ожидаемых длинноволосых голубоглазых блондинов мне попадались исключительно темноволосые итальянцы 🤭
И вот, прохожу очередной корнер со светом — стенд мюнхенского Ingo Maurer. Вижу толпу, которая что-то внимательно разглядывает и не спешит расходиться 🙂 Подхожу ближе... и вот они!!!
Внутри светящейся стеклянной трубы, на прозрачных волнах — крошечные серфингисты! 🗿 Прикол!
Ingo Maurer — одни из самых оригинальных в мире света! Ребята делают не просто светильники, а соединяют искусство, handcraft, юмор и креатив!
Мои фавориты — на фото. Особенно люблю люстру с листочками, на которых можно оставить секретное послание 🛩️
■ Какой из этих светильников поселился бы у вас дома?
#Милан#неделяДизайна#milanDesignWeek#saloneDelMobile#Euroluce#IngoMaurer#MDW2025