Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
#Atlas bayrami
📌 2018-yilda Marg‘ilonda “Atlas bayrami” festivali o‘tkazilgan
⚡️2018-yil 11–15-sentabr kunlari Marg‘ilon shahrida an’anaviy to‘qimachilik festivali — “Atlas bayrami” bo‘lib o‘tdi. Festivalda Xitoy, Ispaniya, Indoneziya, AQSH, Fransiya, Madagaskar, Mongoliya, Tojikiston, Qozog‘iston, Qirg‘iziston va Rossiya kabi 10 dan ortiq davlatlardan mehmonlar ishtirok etdi.
🎓 Festival doirasida Marg‘ilon Hunarmandchilikni rivojlantirish markaziga UNESCO nomoddiy madaniy merosni muhofaza qilish bo‘yicha ilg‘or amaliyotlar reyestriga kiritilganligi haqida sertifikat topshirildi.
📊2018-yil 11–13-sentabr kunlari yosh hunarmandlar va dizaynerlar uchun:
✅an’anaviy kashtachilik,
✅kigizchilik san’ati,
✅milliy matolar asosida kiyim dizayni,
✅hunarmandchilik tadbirkorligi yo‘nalishlarida treninglar tashkil etildi.
📊Unda 60 ga yaqin yosh hunarmand va dizaynerlar qatnashdi.
📊Festival dasturidan:
1️⃣yosh dizaynerlar kolleksiyasining defile namoyishi,
2️⃣“Buyuk ipak yo‘li: an’analarni davom ettirib…” nomli an’anaviy to‘qimachilik ko‘rgazmasi,
3️⃣xalq sayillari va konsert dasturlari,
4️⃣askiyachilar, kurashchilar va dorbozlar chiqishlari,
5️⃣qo‘g‘irchoq tomoshalari,
6️⃣“Hunarmandlar shaharchasi” yarmarkasi o‘rin oldi.
🇺🇿Festivalning asosiy maqsadi — milliy hunarmandchilik an’analarini asrab-avaylash, uni targ‘ib qilish va kelajak avlodga yetkazish, shuningdek yoshlar hamda xotin-qizlarni hunarmandchilik sohasida qo‘llab-quvvatlashdan iborat.
✅Faсebook|
✅Instagram
✅Youtube |
✅Murojaat yo'llash
波士顿动力 Atlas 人形机器人秀后空翻差点摔倒,手部保护罩被甩飞
波士顿动力在 CES 展示新一代 Atlas,人形机器人成功完成后空翻但落地时短暂失衡。机器人为保持平衡剧烈挥动手臂,导致手部保护罩被甩飞。尽管后空翻在工厂无实际用途,但仍被视为展示其灵巧性的重要动作。
标签:#atlas
Created by RocM
官方频道:@rocCHL
官方群组:@roctech
官方合作:@rocmmbot
😂Ну что, можешь меня поздравить — купил себе новенький Mac на M4 Max и установил свеженький Atlas. Будем тестить!
Где взял расскажу в скором времени, считай будет реклама, но с личной рекомендацией
#atlas | AcidCrunch
OpenAI выпустил сегодня браузер #Atlas
От браузера там нет практически ничего, только Home страница теперь chatgpt com. Зачем они на это время и деньги только тратят 😅
🦾 Boston Dynamics показали впечатляющее видео своего робота.
Atlas получает изображение с камеры, данные о положении тела и текстовую команду. На основе этого модель генерирует плавные движения всего корпуса 30 раз в секунду.
Это не набор хрупких скриптов, а система, которая сама «думает», как выйти из ситуации.
Вместо того чтобы «прыгать» от точки к точке, система сразу строит короткую последовательность действий — примерно на полторы секунды вперёд.
Часть из них выполняется, а потом план обновляется, чтобы движения оставались точными и естественными.
Робот показывает, что может работать в реальном бардаке, где всё падает, двигается и мешает работе.
@ai_machinelearning_big_data
#ai#robots#BostonDynamics#atlas
#BostonDynamics#Humanoids#Atlas
В начале января на CES 2026 Boston Dynamics показала новую коммерческую версию робота Atlas (писал об этом здесь). Поскольку исследовательская версия уходит на пенсию, компания показала ролик, где предыдущая версия Atlas перед уходом демонстрирует прыжки, сальто назад, почти человеческий бег и, конечно, неудачные попытки всего этого.