Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Результат налицо!Недавно я Вас спрашивала интересно ли Вам узнать про процедуру для лица #genesis ,
по опросу стало ясно, что о красоте и молодости разговору быть! Не буду томить Вас рассказами о коже артистки, да она (кожа моя😁)устаёт, много работает, капризничает, уходит в отставку, бывают засушливые периоды,но!Год назад я познакомилась с Артуром https://t.me/doctorbagdasaryan
это большой Мастер своего дела, Врач, который взял её(кожу мою) в свои заботливые руки и сказал, что в короткие сроки я и кожа моя будем сражены наповал, не узнаём друг-друга! После консультации в клинике https://t.me/artveclinic
у Артура, мы выстроили программу по восстановлению..иии мы(я и кожа)-пришли в восторг! Одно из составляющих восторга как раз процедура Genesis! Что это? Что делает?Что потом будет? Вредно ?Полезно ?
•Сложность проведения -очень все легко и просто
•Эффективность-сразу/здесь и сейчас/сию секунду
•Болезненность-отсутствует
•Реабилитация- отсутствует
•Польза-максимальная
•Вред-отсутствует
Никакого дискомфорта.Абсолютно безопасно и подходит для любого типа кожи. Имеет стабильный и пролонгированный омолаживающий эффект. Воздействие лазера создает идеальные условия для стимуляции клеток-фибробластов. Они начинают активно вырабатывать естественный коллаген, приводя к улучшению тургора, повышению тонуса и разглаживанию морщин. Эффект процедуры Genesis проявляется постепенно, и особенно хорошо наблюдается на 3 месяц после последней процедуры. А делается она раз в месяц. В среднем сеанс длится от 30 минут до 50. Средний курс составляет 6 процедур с перерывом в три недели. Поддерживать эффект помогут повторные курсы. Обязательно записывайтесь в клинику @artveclinic на консультацию и подбирайте то,что Вашей коже будет полезно,необходимо,впереди зима и нам необходимо к этому подготовиться✨Кожа лица нуждается в Вашей поддержке также,как и Ваше тело,которое Вы водите в спортзал,как и Ваш организм,который Вы питаете полезными блюдами и витаминами,как и Ваша душа,которую Вы наполняете светом и теплом!Будьте гаромоничны,поддерживайте Вашу естественную красоту,заботьтесь о себе и доверяйте себя Лучшим в своём деле!Доверяйте себя Профессионалам!Спасибо всей Команде клиники ARTVE !Спасибо Артур!
#skincare
РУКОВОДСТВО ПО УХОДУ ЗА КОЖЕЙ ➡️ ANTI AGE
Следуйте нашим советам для достижения наилучшего результата!
ЦЕЛЬ: работа над разглаживанием морщин, тонусом и эластичностью кожи 💪
Нанесите на очищенную кожу серум ELASTIN SHOTS и крем TIMELESS PLUS, чтобы противодействовать признакам старения каждый день 😉
⚠️ Используйте уход NO AGE на коже вокруг глаз, нежно массируя для полного впитывания ⚠️
Отметьте вашу лучшую подругу, которая обязательно должна попробовать эти супер новинки!
#pupamilano#madeinitaly#skincare#pupapositivepeopleandplanet
УДЕЛИТЕ ВРЕМЯ, ЧТОБЫ СДЕЛАТЬ КОЖУ СЧАСТЛИВОЙ
💆🏻💆🏻💆🏻
Давайте вместе сделаем легкую зарядку для вашего лица!
Следуйте схеме, чтобы улучшить контуры лица и зарядиться хорошим настроением с утра 😉
🎵 С фоновой музыкой это будет намного веселее! Включите звук на этом видео и повторяйте последовательность действий 🎵
👉 Сохраните этот пост, чтобы тренироваться в любое время 💪
#pupamilano#madeinitaly#skincare#pupapositivepeopleandplanet
РУКОВОДСТВО ПО УХОДУ ЗА КОЖЕЙ 🧾
➡️УВЛАЖНЕНИЕ
Следуйте нашим рекомендациям для достижения наилучшего результата!
ЦЕЛЬ: глубокое увлажнение лица 💪
⚠️ Нанесите NO STRESS на область вокруг глаз, нежно массируя кожу с легким надавливанием.
⚠️ Воспользуйтесь увлажняющим действием гиалуроновой кислоты HYALU SHOTS, нанеся 3-4 капли сыворотки.
⚠️ Нанесите крем SKIN REHAB Prebiotic Moisturizing Cream для предотвращения старения кожи.
#pupamilano#madeinitaly#skincare#pupapositivepeopleandplanet
РУКОВОДСТВО ПО УХОДУ ЗА КОЖЕЙ ➡️ ДВОЙНОЕ ОЧИЩЕНИЕ
О чем мы говорим?
Двойное очищение — самый эффективный способ тщательно очистить кожу и избавить поры от загрязнений и макияжа, даже стойкого.
ЧТО ВАМ ПОНАДОБИТСЯ:
⚠️MOUSSE ME SOFTLY — очищающее средство текстуры мусса.
⚠️WAND ERASER — очищающее средство текстуры масло.
Мы готовы, а вы?
#pupamilano#madeinitaly#skincare#pupapositivepeopleandplanet
📺 ¡Lunes de chollazos top: Xiaomi QLED y Fairy gigante!
Empezamos la semana ahorrando a lo grande. El bombazo de hoy es la Xiaomi QLED de 50" por 271€ (precio rarísimo para esa calidad de pantalla). También destacamos el pack de 3 botes gigantes de Fairy Ultra por menos de 10€ (para no comprar en meses) y una camiseta Levi's por solo 11,4€. ¡Aprovecha que vuelan! 👕🍽️
👇 Selección del día:
🔥 XIAOMI Google TV QLED 50 pulgadas por 271€ (-32% dto)
amzn.to/4cHrkyU
🔥 LEVIS Camiseta Fields of Rye por 11,4€ (-54% dto)
amzn.to/4tPNUeR
🔥 Fairy Ultra 3x900ML por 9,9€ (-44% dto)
amzn.to/3Ouj7V2
🔥 d'alba Crema Skincare Coreano por 23,9€ (-63% dto)
amzn.to/4tRbE2a
🔥 Braun Silk-épil 7 Depiladora Eléctrica por 79€ (-45% dto)
amzn.to/4ryqedD
🔥 Mini Aspiradora para Coche por 15€ (-43% dto)
amzn.to/4kVqLE4
#Xiaomi#SmartTV#Levis#Skincare#OfertasAmazon#Ahorro
Got stuck with super glue on your skin? Here are supposedly effective ways to safely remove it:
● Use vegetable oil to soften the glue.
● Apply petroleum jelly or hand lotion to break it down.
● Carefully use acetone (nail polish remover) to dissolve the glue.
● Try lemon juice as a natural solvent.
● Soak the affected area in warm soapy water for 10–15 minutes.
● Apply a warm compress to loosen the glue.
● Gently rub dried glue with coarse salt.
● Use a nail emery board or pumice stone to help remove glue.
● Separate stuck fingers with a flat, blunt object.
● Avoid pulling the glue off quickly to prevent skin damage.
Stay safe and take your time! 🖐️🧴🔥
P.s:
Let us know if and what works, the author of this post is still a little glued to the screen.
Seriously, send help..
[Read more]
@googlefactss
#SuperGlue#SkinCare#Safety#FirstAid
Всем самый летний привет!☀️Девочки,продолжая нашу рубрику вопрос-ответ(вопрос про уходовые средства ) Делюсь с Вами своими Бьюти открытиями . Топ 3 моих главных фаворита от бренда Maskoholic 💚@maskoholic_com
-Патчи(они всегда есть в моей сумке)и я ими пользуюсь абсолютно везде(лучший экспресс-уход перед съемкой,спектаклем,выходом в свет)
-энзимная пудра для глубокого очищения лица и шеи(супер штука,глубоко очищает поры даже от самого плотного тонального крема) , а за день на съёмках его накапливается тонны😅
-увлажняющая маска (вЭликолепное завершение для трапезы кожи,измождённой и изголодавшейся по гидратации🥰)
Девочки ,очень рекомендую это тройное Комбо для лица от бренда Мaskoholic . Ваша кожа будет счастлива!С этими средствами Вы всегда будете во всеоружии😎💋Ну и конечно любая Женщина со мной согласится,что лицо,как и душа,как и фигура тоже нуждается в питании и поддержке!Запомните!Не бывает некрасивых Женщин,бывают ленивые!Заботьтесь о себе и своей красоте!Ведь красота-это свобода!
#skincare#greengo#beautybar#pure
💥Revolution SKin, Be Bright Starter Kit
Ilumina tu piel esta Navidad
✅OFERTA: 11.19€
❌ Antes: 15.99€
💰Ahorras un 30%🔥
Consigue una piel radiante con productos veganos y libres de crueldad
👉 Descubre la luminosidad
#skincare#vegano#cuidadodelapiel#iluminador#revolutionskin#navidad#ofertas#belleza
🛰️Oferta publicada en Moda y Belleza
Ni lavadora ni chocolates, este mes, celebra a mamá como se lo merece regalándole Self ID, la rutina de skincare que mejorará la salud y el aspecto de su rostro y cuello. ✨
¡Entra a https://selfidlab.com/mothers-day/ y compra la gift card con el código “TEAMOMA” y sorpréndala con el regalo ideal! 💖
#selfid#skincare#amatupiel#regalomama#giftmany#10demayo#regalos
Испанская марка Skeyndor – это не просто национальное достояние, но еще и более 60 лет семейного бизнеса, более 60 стран, 2000 запатентованных формул, и многолетняя любовь к русской литературе и истории. Действие линии Eternal определяется растительными стволовыми клетками Швейцарского Яблока* (UttwilerSpätlauber – их называют молодильными яблочками), которые проникают в очень глубокие слои кожи (за пределы базальной мембраны эпидермиса), и улучшают обменные процессы в дерме, восстанавливают толщину и структуру эпидермиса, улучшают связи между клетками, оживляют стволовые клетки эпидермиса, и стимулируют синтез жизненно важных компонентов кожи, и кожа восстанавливает свой утраченный объем. Сказочный омолаживающий эффект дополняют невероятно приятные укутывающие кожу текстуры и совершенно волшебный аромат! @skeyndor_russia @_beautyroom_parfumepalace #antiage #antiageskincare #skincare #skeyndor #beauty #антивозрастной#антивозрастнойуход#уходзалицом#антивозрастнаякосметика#испанскаякосметика