Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Еще немного о ярмарке 1703, а именно личный выбор. То, что хотелось бы унести с собой, пока виртуально.
◽️любой объект из уже упомянутого проекта Леонида Костина со стенда галереи Futuro. Если кратко, художник глубоко исследует икону как предмет - детально углубляясь в процесс производства и скрупулезно его повторяя в своих произведениях. В результате получаются невероятно красивые абстрактные предметы, наполненные интеллектуальным и духовным смыслом, вложенным в них ручным трудом, но свободные от сакральности. Влюбилась.
◽️пылающую картину петербургского стрит-арт художника Турбена (так же известного как Turbo), которую я назвала «Осенний лес». Цвет, композиция, пластика, абсурдный сюжет - нравится все.
◽️работы давно меня интригующей Вари Щуки (видео и картина на шелке) - похожие на позднесоветские эстетика и сюжеты(прошлое) соединяются с технологиями, синтетическим цветом, какой-то эфемерностью и нездешностью (будущее?). В этой точке образуется что-то очень хрупкое и щемящее, совпадая с моим ощущением того, что можно назвать «сейчас».
◽️ расколовшаяся в печи, но собранная вновь, керамика Вики Утикалко. Хрупкость, которая не сдается, превращаясь в красоту.
◽️завораживающие «Магические квадраты доктора Рюйша» Владимира Кустова, где имматериальность притворившейся бальзамированным трупом голограммы заземляется бескомпромиссностью металлических инструментов паталогоанатома, порождая новую вещественность и вечность.
◽️от голографических мумий к «живому» и деятельному Ленину Алексея Азарова. По-моему это дико смешно.
◽️и в завершение вполне упоротые зайцы (и не только) петербургского керамиста Артема Максимова: захотелось срочно вернуть на место огромный черный бабушкин комод - там они будут как дома!
Ярмарка продлится до 9 июня.
#artfair
Самые интересные, цельные и стильные стенды на ярмарке 1703 (по моей версии):
◽️галерея Futuro с проектом Леонида Костина
◽️ галерея Myth, представившая тотальную инсталляцию Егора Федоричева
◽️молодая галерея ультрасовременного искусства Jessica с бескомпромиссной абстрактной инсталляцией петербургских художников
◽️ Марина Гисич с как всегда цельной экспозицией из работ Ивана Горшкова, Константина фон Рибена и Владимира Кустова
◽️свежий и яркий стенд Maison25, представивший Сашу Рощина, Алису Спотс и Дмитрия Горбунова
◽️pop/off/art gallery с дерзким предложением своеобразных арт фьючерсов в виде пустых холстов Виталия Пушницкого
◽️изящный стенд коммерческого крыла KGallery под названием «Из профессорской квартиры.
Завтра снова отправляюсь в Манеж за подробностями😍
#artfair
Добралась до Санкт-Петербурга и ярмарки 1703. В холле встречает новая скульптура Ивана Горшкова и дискуссия о том, наличествует ли сегодня настоящая арт-журналистика. Что же, актуально. Вечером ждите репортаж.
Записки #follow_artпутешественника#artfair
Стенд Е9
"Искусство в спорте"
Любови Барыкиной
На «УНИКАЛЬНОЙ РОССИИ»
В Гостином дворе
Ул. Ильинка 4
ЖДЕТ ВАС
С 4-7.02.26
С 12:00-20:00
8.02.26
С 12:00-17:00
✅15 стран
✅22 Региона РФ
✅70 городов
✅7000 Участников
✅13 Музеев
#UniqueRussia
#ArtFair
#Moscow🇷🇺
#LiubovBarykina
Уважаемый
Александр Андреевич,
была рада видеть Вас на открытии моего стенда международного выставочного проекта
«Искусство в спорте»
в рамках художественной
выставки-форума
УНИКАЛЬНАЯ РОССИЯ 2026
в Гостином дворе!
Международный проект
«Искусство в спорте»
Любови Барыкиной -
15 Стран
22 Региона РФ
70 Городов
7000 Участников
13 Музеев
https://www.instagram.com/alexanderdobrovinsky?igsh=MTkxOWZ4N2hkM3VxZA==
#ArtInSports
#ArtFair
#UniqueRussia
#Moscow🇷🇺
Международный проект
«Искусство в спорте»
Любови Барыкиной -
15 Стран
22 Региона РФ
70 Городов
7000 Участников
13 Музеев
На главной сцене
«Уникальной России» 2026
Международный Проект
«Art in Sports»
представили звезды
всех творческих
направлений
России и Мира!
Создатель проекта, МСМК по художественной гимнастике,
Академик Российской
Академии Художеств
Любовь Барыкина выступила
с показательным номером
вместе с певицей,
актрисой театра «Ромэн»
Верой Жемчужной,
юной певицей Софьей Михеевой и Московским творческим коллективом сценической гимнастики «Краски»!
Ждём Вас в Гостином дворе
до 08.02.26 на стенде Е9
По адресу ул. Ильинка 4
#LiubovBarykina
#ArtFair
#Unique
#Moscow🇷🇺
03.02.26 на стенде E-9
выставочного проекта
«Искусство в спорте»
состоялось торжественное
открытие в рамках
художественной
выставки-форума
УНИКАЛЬНАЯ РОССИЯ !!!
https://t.me/UniqueRussia
Вера Жемчужная
https://www.instagram.com/vera_zhem?igsh=c292OHlkMTQ1aDhy
Софья Михеева
www.instagram.com/sofjaart?i...
и Московский коллектив
сценической гимнастики Краски
https://www.instagram.com/kraskigymnastics?igsh=MXNiMWZiZzZ0ZnpsOQ==
презентовали вместе с
Любовью Барыкиной проект
«Искусство в спорте»
на главной сцене
«Уникальной России»
в Гостином дворе!
Международный проект
«Искусство в спорте»
Любови Барыкиной -
15 Стран
22 Региона РФ
70 Городов
7000 Участников
13 Музеев
Спасибо моим гостям за
общение и прекрасную
атмосферу вечера!!!
Фото: https://www.instagram.com/span.ph?igsh=Z2Nja2xwYXY1cmJr
#LiubovBarykina
#ArtFair
#UniqueRussia
#Artist
#ArtInSport
03.02.26 на стенде E-9
выставочного проекта
«Искусство в спорте»
состоялось торжественное
открытие в рамках
художественной выставки-форума
УНИКАЛЬНАЯ РОССИЯ !!!
https://t.me/UniqueRussia
Международный проект
«Искусство в спорте»
Любови Барыкиной -
15 Стран
22 Региона РФ
70 Городов
7000 Участников
13 Музеев
Спасибо гостям за чудесную атмосферу и общение
💜💜💜
Фото: https://www.instagram.com/span.ph?igsh=Z2Nja2xwYXY1cmJr
#ArtFair
#UniqueRussia
#LiubovBarykina
#Artist
#Moscow🇷🇺
Видео сюжет о 4-ой масштабной художественно-промышленной выставки «Уникальная Россия» 2024,
в которой участвовал мой международный проект
«Искусство в спорте»
Совсем скоро 3.02.2026 стенд
Е-9 выставочного проекта
#ArtInSports приглашает
всех желающих в 16:00
на торжественное открытие
6-ой художественно-промышленной выставки Уникальная Россия !!!
#LiubovBarykina
#Exhibition
#Moscow
#Artfair
#UniqueRussia🇷🇺
3 и 4 декабря состоялся
Предпоказ «ОБЕРТОН»
от Cosmoscow
ЯРМАРКА СОВРЕМЕННОГО
ГРАФИЧЕСКОГО
ИСКУССТВА,
а ТОН ЦЕНТР
(культурный центр)
напоминает мне
мой любимый концертный
зал Дюссельдорфа
#TonhalleDuesseldorf
#ArtFair#Moscow
#Preview#LiubovBarykina
#Oberton#Cosmoscow