Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Всем привет! В мире, где мы стремимся сохранить молодость и здоровье на протяжении долгого времени, проведение регулярных обследований (чек-апп), включающих в себя определенный перечень исследований, как обязательных, так и рекомендуемых дополнительно в зависимости от запроса самого пациента/ наличия показаний) - является нормой жизни!
Данные, полученные в ходе таких исследований, могут предоставить нам ценную информацию как о состоянии нашего организма, так и потребностях в питательных веществах и витаминах.
Это особенно важно в контексте Anti-age, где мы стремимся замедлить процессы старения и сохранить молодость и энергию. В этот раз мы рассмотрим ценность проведения обследования на витамины, антиоксиданты, ферменты и их связь с Anti-age.
#уролог#AntiAge
💥Sérum LOréal Paris Age Perfect Midnight
Renueva tu piel esta Navidad
✅OFERTA: 14.93€
❌ Antes: 27.75€
💰Ahorras un 46%🔥
Logra un renacimiento celular con antioxidantes
👉 Descubre tu nueva rutina de belleza
#antiage#pielradiante#serumfacial#complejoantioxidante#belleza#mujer#navidad#ofertas
🛰️Oferta publicada en Moda y Belleza
Очень часто слышу от подруг:
«Я боюсь уколов, но и морщинки смотреть не хочу. Что делать?»
Знакомо? Руки чешутся что-то сделать с кожей, но перспектива игл и синяков останавливает.
Мы нашли третий путь 🥳.
BLÓМ — для тех, кто хочет результат, сравнимый с салонными процедурами, но без боли, синяков и периода «отлежаться».
Да, в названии есть слово «микроиглы». Но это не те иглы, которыми пугают в кабинетах. Это крошечные кристаллы гиалуроновой кислоты. При контакте с кожей они растворяются в глубоких слоях эпидермиса. Вы чувствуете легкое покалывание 🌀, а ваша кожа в этот момент перезапускает свои функции: улучшается микроциркуляция, восстанавливается структура.
Ваша красота — в ваших руках, без абонемента в клинику. Кто тоже любит домашние спа-процедуры? 🥰👇
#уходбезуколов#микроиглы#домашнийуход#antiage#красотабезфанатизма
Мы привыкли, что крем — это панацея. Купила дорогой — и красота обеспечена. Но давайте честно: крем работает в верхнем слое кожи. А основные проблемы — потеря упругости, обезвоженность, тусклость — зарождаются глубже.
И что мы получаем? 🤔 Крем лежит на поверхности, создавая пленку. А морщинки («гусиные лапки») и чувство стянутости никуда не деваются. Знакомо чувство, что выкинули деньги на очередную красивущую баночку, которая не оправдала надежд? 💸
BLÓМ — это про доставку. Это мягкая, но действенная альтернатива салонным процедурам, но без похода к косметологу и реабилитации.
Микроиглы на 94-97% состоят из гиалуроновой кислоты. Они создают микроканалы — это запускает мощнейшее обновление, выработку собственного коллагена ✨. А гиалуронка в это время уходит глубоко и работает там, где нужно.
Клинические исследования подтверждают: текстура кожи улучшается на 65,3%, а морщины становятся менее выраженными на 66,8% 📊. Это не просто увлажнение, это структурное изменение. Пора перестать мазать «пустышки» и начать действовать прицельно.
Согласны?💖
#эффективныйуход#микроигольчатыепатчи#блум#antiage#уходзалицом
В пятницу прошёл, уже ставший традиционным, Форум «Эстетическая медицина будущего»🫶🏻
Цифровое деловое пространство на Покровке ежегодно собирает представителей сообщества эстетической медицины🙌🏼
⠀
Что прямо сейчас происходит в эстетической медицине? Как повлияла новая реальность на развитие практических аспектов, на прогресс и перспективы, на внедрение открытий и достижений? Это настолько же неизбежный, насколько и интересный всем вопрос, который, конечно же, поднимался и обсуждался на Третьем Международном форуме «Эстетическая медицина будущего. Тренды-2022».
⠀
Прекрасное мероприятие чтобы узнать обо всех новинках в этой области, встретиться с коллегами и получить много приятных подарков от спонсоров.
До встречи следующем году! 💕
#эвалар#коллагенэвалар#эстетикаэвалар#эстетическаямедицина#коллаген#красота#antiage#омоложение
Испанская марка Skeyndor – это не просто национальное достояние, но еще и более 60 лет семейного бизнеса, более 60 стран, 2000 запатентованных формул, и многолетняя любовь к русской литературе и истории. Действие линии Eternal определяется растительными стволовыми клетками Швейцарского Яблока* (UttwilerSpätlauber – их называют молодильными яблочками), которые проникают в очень глубокие слои кожи (за пределы базальной мембраны эпидермиса), и улучшают обменные процессы в дерме, восстанавливают толщину и структуру эпидермиса, улучшают связи между клетками, оживляют стволовые клетки эпидермиса, и стимулируют синтез жизненно важных компонентов кожи, и кожа восстанавливает свой утраченный объем. Сказочный омолаживающий эффект дополняют невероятно приятные укутывающие кожу текстуры и совершенно волшебный аромат! @skeyndor_russia @_beautyroom_parfumepalace #antiage #antiageskincare #skincare #skeyndor #beauty #антивозрастной#антивозрастнойуход#уходзалицом#антивозрастнаякосметика#испанскаякосметика
«СОЗДАТЕЛИ IV» Спикеры
☺️ВЛАДИМИР ПОПОВ☺️
⬇️Доктор Remee+, RHS, RMS, взрослый и детский невролог, специалист превентивной, функциональной и регенеративной медицины (5P).
⬇️Лектор (лектор-эксперт PreventAge), основатель направления Remee+, со-основатель проекта СОЗДАТЕЛИ.
⬇️Сооснователь и медицинский директор главного суплементарного интернет-магазина в России и странах СНГ — «АЙТАБ» (itab.pro).
20 апреля доктор Владимир Попов в своей лекции «Биология красивой кожи. Системная эстетика: управление здоровьем кожи изнутри на разных возрастных этапах» расскажет вам о:
✨Что нужно сделать с кожей до иглы и скальпеля.
Системная подготовка тканей как новый стандарт эстетического подхода от Remee+.
Почему качество кожи определяется не косметологией, а биологией тканей.
✨Почему одинаковые процедуры дают разный результат.
Роль метаболизма, митохондрий и микроэлементов в формировании качества кожи.
✨Антиоксидантный баланс как фундамент молодой кожи.
Как управлять окислительным стрессом и защищать коллагеновые структуры.
✨Пептиды, репарация ДНК и нутрицевтики в эстетической медицине.
Новые инструменты управления качеством кожи изнутри и практические алгоритмы их применения.
✨Фотостарение начинается задолго до морщин.
Внутренние стратегии фотопротекции (защиты от УФ-излучения).
✨Дисплазия соединительной ткани.
Почему стандартные протоколы часто не работают и как помочь в эстетических вопросах диспластикам.
✨Системная эстетика как новая ступень антивозрастной медицины.
(РемскИН) ReмскIN: диагностический (РемЛист) RemList и поэтапное восстановление тканей.
📎Напоминаем, если вы хотите пообщаться с доктором лично и задать интересующий вас вопрос, вы можете приобрести билет тарифа Прайм(даёт доступ к закрытой части сессии вопрос-ответ с доктором Владимиром Поповым).
*Количество билетов ограничено!
Успевать забрать свой➡️СЮДА❤️
#создатели#красота#медицина#биохакинг#здоровье#зож#эстетика#косметология#бьюти#антиэйдж#antiage#молодость#пластика#омоложение#уход#кожа#эпидермис#дерма#гиподерма#косметика#ретиноиды#филлеры#пластика#пластическаяхирургия