Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
💫ART FLASH в СМИ#team
В мире современного искусства всегда происходит что‑то новое — и мы стараемся быть в центре этих событий. Даем комментарии, делимся экспертизой об искусстве и разбираем интересные кейсы. Наша цель — не просто информировать, но и помогать аудитории лучше понимать, как развивается арт‑сфера.
Делимся некоторыми из наших публикаций в СМИ за 2025 год:
💫Сноб: 5 новых правил арт-рынка
💫Ведомости:материал о новой волне коллекционеров
💫РБК: роспись коридора реабилитационного центра «Кораблик» от ART FLASH, художника Гарри Зуха и фонда ОРБИ
💫MyDecor: обзор Первой биеннале современного искусства в Бухаре
💫Archi.ru: спецпроект «Азбука конструктивизма на ясном языке» от ART FLASH и филиала Третьяковской галереи в Самаре
💫NOW: Эмилия Манвельян о конференции ART FLASH на стыке искусства и бизнеса
💫Sostav: социологическое исследование восприятия и динамики развития сферы искусства в России от лаборатории Luch Research при участии ART FLASH
ART FLASH
💫Какими были наши новогодние каникулы?#team
Зимние праздники у нашей команды были насыщенными, но очень расслабленными. Рассказываем, что делали 🤍
⭐️Слушали оперу на концерте «Новый год в Вене» в Большом зале консерватории им. П.И. Чайковского.
⭐️Были на выставке «Из Пекина в Москву: диалог культур» в Третьяковской галерее.
⭐️Путешествовали в уютные заснеженные города: Тарусу, Ярославль, Ростов и Рыбинск.
⭐️Экспериментировали с оливье под новогодние фильмы и строили пряничные домики.
⭐️Праздновали Рождество и впервые запекли утку с яблоками.
⭐️Покоряли горные вершины Южного Урала и катались на сноуборде.
⭐️Много времени проводили за городом и на природе, гуляли и виделись с близкими.
ART FLASH
💫Итоги года арт-экосистемы ART FLASH#team
2025 год подходит к концу — год, наполненный новыми проектами, событиями, коллаборациями и значимыми партнерствами. Команда ART FLASH продолжает расти и развиваться, чутко отвечая на новые тенденции арт-рынка и расширяя границы экосистемы.
Самыми яркими моментами и проектами года мы делимся с вами в сегодняшних карточках. Оставайтесь с нами в следующем году — впереди еще больше идей, форматов и вдохновения.
Делитесь в комментариях, чем вам запомнился 2025 год ✨
ART FLASH
💫Медиа 2026: год тихих форматов, локальных историй и искусственного интеллекта#team
Привет! На связи главный редактор ART FLASH Алина Наимбоева 🤍
13 декабря по всему миру отмечается День главного редактора, и в честь своего профессионального праздника я решила поделиться своими наблюдениями о том, что будет формировать медиапространство в 2026 году.
С каждым годом медиа трансформируются, и вместе с ними меняются привычки аудитории и язык контента. В карточках — 5 ключевых трендов, которые, на мой взгляд, станут важными в новом году 👆
ART FLASH
#team
Kuni kecha jamoadagilarni ‘muhim yig’ilish bor’ deb ofisga chaqirdik. Maqsad, 8-mart munosabati bilan syurpriz qilib tabriklash va iftorlik qilib berish edi.
Qizlarimiz kelganda hayron) Bollarimiz ‘mujik’, ularni qo’lini so’viq suvga urdirmasdan ‘don-don ziki’ o’ynab, o’zlari idishlarni yig’ishtirib, yuvib qo’yishdi.
Shunday jamoamiz borligiga ko’z tegmasin✨
Para esta Mini-ColecciónPekeArt nos creó cuatro diseños de cajitas, uno muy específico para el conjunto de "La Noche Estrellada" (👀mira el reel anterior 👀) y estos que te mostramos hoy, muy identitarios de Bia con sus ilustraciones creadas por @draw_my_journal
A este #team le encantó todo el proceso y resultado, cuéntanos tú ¿Te gustó esta colaboración?👇
📷Mira el Reel en Instagram📷
Arseniy Key:
Более 10 лет занимаюсь компьютерной графикой. Первая моя работа была на телевидении. Я делал оперативную графику – создавал текст и плашки для прямого эфира. Много работал с видео продакшенами – корпоративными фильмами, рекламой. В текущий момент занимаю должность артдиректора медиа продакшена. Но моя страсть привела меня к G-Bots, я полностью сосредаточен на проекте и отношусь к нему как к своему ребенку.
В художественное творчество я пришел естественным образом, любовь к 3D графике у меня была с детства. Мне всегда нравились игрушки – Sega, Денди, Play Station. Эта эстетика вдохновляет меня до сих пор. Помню, я смотрел Историю игрушек и думал: “Ничего себе, это же практически как в реальности!” Сразу захотелось научиться делать также. Около года назад я попал в мир NFT, с тех пор мои мысли были заняты привнесением в эту технологию чего-то действительно крутого. Поэтому G-Bots – это не только роботы, но и концентрация опыта и любви к прекрасному.
Ставьте сердце, если было интересно! ❤️
#team
Мы запускаем серию постов, в которых будем подробно рассказывать о каждом члене команды. Сегодняшний наш герой – Arseniy Key – артдиректор и главная творческая сила G-bots. Именно он создал основную визуальную концепцию ботов.
Соцсети Arseniy Key:
Instagram
Behance
Все посты будут маркированы хэштегом #team
А у нас сегодня не один, не два и даже не три ивента! У Олега Крючкова сегодня день рождения! Мы поздравляем Олега и желаем его многогранной личности блистания, улыбания и процветания! #positive#team
💫Время планировать отпуск вместе с ART FLASH на 2026 год#worldart#team
Мы отправляемся во вдохновляющие арт-туры по всему миру — от Нижнего Новгорода до Парижа. Вас ждут 8 авторских программ, наполненных современным искусством, гастрономическими открытиями и неповторимой атмосферой творчества и путешествий. Подробнее о каждом направлении мы рассказали в карточках.
📌Хотите узнать, какой тур идеально подходит именно вам, или уже готовы забронировать место, пока его не заняли? Пишите на наш аккаунт @ARTFLASH_Team или в комментариях слово «арт-тур» и мы отправим вам всю информацию лично 🤍
ART FLASH