Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
31 июля — это день, когда чудеса становятся реальностью, ведь это день рождения Гарри Поттера⚡️
В мире магии он получал разнообразные волшебные подарки, но что бы подарили Гарри его друзья, если бы они жили в нашем современном мире?🎁
Мы в Giftery, совместно с экспертами с Буквоед, решили представить, какие подарки могли бы сделать Рон, Гермиона, Хагрид и другие друзья Гарри, если бы им пришлось выбирать среди привычных нам вещей.
✅Листайте картинки к этому посту, чтобы узнать.
А какие подарки вы бы выбрали для Гарри Поттера? Поделитесь своими идеями в комментариях!✍🏻
#Giftery
Дарите женщинам сертификат без повода, и без причины! Ведь много не надо, чтобы быть счастливой!🎶
🎁Подарки без повода – это не просто приятно, это волшебно!
Плюсы подарков без повода:
✅Неожиданная радость: радость и улыбка на лице получателя.
✅Проявление заботы: демонстрирует вашу заботу и внимание.
✅Укрепление отношений: такие сюрпризы делают отношения крепче и теплее.
✅Приятные эмоции: создают атмосферу счастья и положительных эмоций.
Пусть каждый день будет особенным!
Хотите подарить электронную подарочную карту? Заходите на сайт giftery.ru!
Ставьте ❤️, если вы любите получать подарки без повода.
#giftery
Устами кота гласит истина!😄
Электронные подарочные карты становятся все более популярными, и вот почему:
1. Удобство: мгновенная доставка по электронной почте или SMS.
2. Экологичность: нет пластика – меньше мусора.
3. Безопасность: легко восстановить при утере.
4. Персонализация: добавляйте сообщения и изображения или видео.
5. Доступность: покупайте в любое время суток.
6. Широкий выбор: покупки в интернете без границ.
🎁Хотите подарить электронную подарочную карту? Заходите на сайт giftery.ru и сделайте подарок с заботой и удобством!
Ставьте ❤️, если вам понравилось видео с котиком.
#giftery
Уникальный выбор на Giftery - более 400 подарочных сертификатов!💌
Представьте себе, что у вас есть доступ к более 400 вариантам подарочных сертификатов от известных брендов. Звучит завораживающе, не правда ли?😍
Giftery предлагает невероятный ассортимент, от модных магазинов и ресторанов до аптек и онлайн-платформ. Зависть из "Головоломки 2" в восторге от такого разнообразия!
🎁Независимо от интересов и предпочтений, у нас вы найдете идеальный подарок для каждого. Заходите на сайт giftery.ru
#giftery
Забыли про день рождения или хотите порадовать кого-то без лишних хлопот? Электронный подарочный сертификат – идеальное решение!
🔹Мгновенная доставка: подарочные сертификаты доставляются мгновенно. Отправьте на e-mail или по SMS, и получатель не сможет его потерять.
🔹Удобство: получатель может сразу использовать сертификат, просто показав его на смартфоне.
🔹Экономичность: нет затрат на упаковку и доставку, что делает сертификаты экологичным и выгодным вариантом.
🔹Интересные факты:
По данным исследования InComm, 70% потребителей предпочитают электронные подарочные сертификаты физическим, из-за их удобства и скорости доставки.
🔹Согласно опросу Blackhawk Network, 60% людей сообщили, что получили электронный сертификат в подарок в последние два года, и 90% из них остались довольны.
Электронный подарочный сертификат – это быстро, удобно и современно. Оцените сами!💌
Ссылка на сайт.
Ставьте ❤️, если видео вам понравилось😄
#giftery
Попробуйте сами!💌
Не все знают, что на сервисе Giftery есть функция отправки тестового сертификата на вашу почту. Это отличный способ проверить, как все работает и как будет выглядеть сертификат для получателя.
Как это сделать:
🔸Зайдите на сайт Giftery.
🔸Перейдите в раздел «Купить подарочную карту» и выберите нужный бренд сертификата.
🔸В карточке выбранного сертификата нажмите на раздел «Как отправить?».
🔸Введите свое имя и электронную почту.
🔸Получите сертификат на почту и убедитесь в его удобстве!
Попробуйте прямо сейчас и наслаждайтесь простотой и надежностью сервиса!🎁
Ссылка на сайт.
#Giftery
Сегодня мы хотим выразить огромную благодарность всем нашим покупателям за ваши отзывы!💛
Каждое ваше слово помогает нам становиться лучше и радовать вас ещё больше. Благодаря вашим комментариям и оценкам, мы продолжаем развиваться, добавлять новые функции и улучшать наш сервис. Спасибо, что выбираете нас и делитесь своими впечатлениями. Ваша поддержка вдохновляет нас на новые свершения!
Оставляйте отзывы, рассказывайте о своих впечатлениях и помогайте нам становиться лучше для вас.💌
С уважением, Giftery
#Giftery
С Giftery проблема ненужных подарков будет решена!🎁
Мы все были в этой ситуации: получаем подарок, который оказывается совершенно ненужным. Зачем дарить ненужные подарки, когда можно сделать так, чтобы каждый подарок приносил радость и пользу?
🔸Факт 1: Большинство подарков теряют свою актуальность.
Исследования показывают, что около 60% людей получают подарки, которые они никогда не используют. Это не только пустая трата денег, но и разочарование для получателя.
🔸Факт 2: Экологические последствия.
Ненужные подарки часто оказываются выброшенными, что увеличивает количество отходов.
🔸Факт 3: Удовлетворение от выбора.
Исследования показывают, что возможность выбрать подарок самостоятельно значительно повышает удовлетворение от подарка. С Giftery ваши близкие смогут выбрать то, что им действительно нужно и нравится.
🙌🏻Пусть каждый подарок будет желанным и полезным! До встречи на сайте.
#giftery
Ставьте 👍🏻, если видео вам понравилось😄
Идеальный подарок для выпускного найден!🔥Универсальная подарочная карта Giftery Card — именно то, что нужно!
💌С Giftery Card ваш выпускник сможет выбрать подарок по своему вкусу из множества вариантов: от модных аксессуаров до гаджетов и даже впечатлений. Это универсальный подарок, который точно понравится каждому, ведь свобода выбора — лучший сюрприз.
Кстати, такой подарок подойдет и в качестве благодарности учителю или директору школы👍🏻
✅Отправить подарочную карту можно всего за пару кликов с сайта Giftery! Дополните универсальную подарочную карту текстом с поздравлением, совместным фото или запишите видео поздравление, чтобы сделать подарок еще более особенным.
🎁Дарите радость выбора с Giftery! Ссылка на сайт.
#Giftery
Ставьте ❤️ на пост и делитесь этой идеей подарка на выпускной с друзьями и знакомыми.
Дарите и получайте подарочные сертификаты, которые хочется использовать сразу!🙌🏻
Будь то ужин в любимом ресторане, поход в СПА или шопинг в любимом магазине – с Giftery всегда найдется что-то особенное для каждого💫
Подарки, которые радуют мгновенно!
Ссылка на сайт.
С вас ❤️, если видео вам понравилось!😄
#giftery
🌟6 июня в России отмечается Пушкинский день — праздник, посвященный русскому языку, а также великому поэту и писателю, чей вклад в русскую литературу неоценим.
🎁В этот день мы в Giftery, совместно с экспертами из Литрес, хотим поделиться интересными фактами о Пушкине и о значимых подарках, которые он получил в своей жизни.
Листайте картинки к посту, ставьте ❤️ и делитесь постом с друзьями.
#giftery
Климат и потребительские привычки: есть ли связь?
В Giftery мы верим, что каждый из нас может способствовать защите нашей планеты. Но знаете ли вы, насколько глубоко влияют наши повседневные потребительские привычки на изменение климата?
📊 Интересные факты и статистика:
🛍Воздействие упаковки: по данным исследований, около 30% отходов в мире приходится на упаковочные материалы, многие из которых не подлежат переработке. Это приводит к увеличению выбросов парниковых газов на свалках.
📧Цифровые решения: переход на электронные подарочные сертификаты может существенно уменьшить количество отходов. Например, если 10% покупателей выберут электронный вариант вместо традиционного, это может снизить использование бумаги на тонны ежегодно.
🎁Подарки и потребление: исследование показало, что более 60% людей предпочли бы получить подарок, который не вредит окружающей среде. Это свидетельствует о растущем стремлении к устойчивому потреблению.
💡Присоединяйтесь! Вместе мы можем сделать наш мир лучше.
#giftery