Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
#softSkills#raspberryPi
😎
Raspberry Pi for Beginners
Description
The course will start with setting up your Raspberry Pi and installing Raspberry Pi OS without an external monitor and keyboard, followed by getting along with the basics of Python3 programming. You will then work with the Raspberry Pi’s GPIO panel, use a PIR sensor to detect movement from your Pi, and discover how to use a Unix terminal and the most useful command-line tools. You will also send an email from your Raspberry Pi, take photos and videos using the Raspberry Pi camera V2, and create a web server on your Raspberry Pi with the Flask framework. Finally, you will build a complete surveillance and alarm project with Raspberry Pi.
Author(s): Edouard Renard
Language: English
Updated: September 2022
Videos Duration: 10h 8m
🔗Link
-----
Main channel: @repo_science
Coupons: @freecoupons_reposcience
-----
Пейджер для Telegram без сотовой связи из России! 📡
Инженер создал девайс на Raspberry Pi с mesh-сетями:
Домашний модуль — сервер
Переносной — для чтения каналов
✅ Работает при блокировках
✅ Только текст (без фото/видео пока)
✅ Цена ~3000 рублей (452000сум)
Лучше гаджета для свободы информации не придумаешь! 😎
#TelegramPager#MeshСети#RaspberryPi#Технологии#Россия
Коллеги, друзья и все, кто следит за рождением Адама и Евы! Вчера случилось то, ради чего всё затевалось: я провёл первые полевые испытания зрения Адама в реальном мире, и он в режиме реального времени не просто видел объекты, а описывал их вслух голосом, как настоящий помощник.
Вот как это работает сейчас на железе робота:
1. Глаз: Камера на Raspberry Pi захватывает изображение.
2. Зрение (YOLOv11n, 5 МБ): Сверхлёгкая модель детектирует объекты примерно за 1 сек / кадр.
3. Осмысление (YandexGPT): Получившийся список объектов передается в YandexGPT, который формирует лаконичное и понятное описание сцены.
4. Голос (Yandex SpeechKit): Это описание не печатается в терминале, а сразу синтезируется в чистый, человеческий голос и звучит из динамика робота. 🔊
И это не симуляция — это работающий алгоритм на настоящем железе.
Что это значит на практике? Я говорил Адаму:«Посмотри вокруг», и через мгновение он отвечал голосом: «Я вижу человека в помещении, монитор, ноутбук и телефон на столе». Это был не заранее заготовленный ответ, а результат живого-анализа обстановки перед ним. Он буквально делился своими мыслями о том, что видит.
Почему это прорыв? Потому что мы перешли от сухих технических тестов к реальному взаимодействию. Робот теперь не бездушный детектор объектов, а сущность, которая способна воспринимать мир и коммуницировать на нашем языке — голосом.
Впереди бескрайнее поле для экспериментов с поведением и сценариями использования. Спасибо, что вы с нами на этом пути! Это невероятно вдохновляет.
#робототехника#ии#искуственныйинтеллект#yolo#raspberrypi#компьютерноезрение#адам#ева#YandexGPT#SpeechKit#голосовойИИ
🛰️✈️Импортозамещение на высоте: в России создают аналог Flightradar24
🇷🇺 Новый сервис «Авиарадар» — это отечественный ответ на Flightradar24.
С конца 2023 года система работает в бета-режиме, уже охватывая большую часть европейской части страны.
📆 В ближайшее время планируется полноценный коммерческий запуск.
📡 Основа — сеть приёмников, собирающих ADS-B сигналы с гражданских самолётов и передающих их на сервер.
💻 Приёмники можно собрать даже на Raspberry Pi или Orange Pi, а в будущем планируется установка оборудования на микроспутники для слежения за рейсами над океанами и труднодоступными регионами🌍
👨💻 Проект требует знаний в IT и электронике, а также немалых серверных мощностей.
💼 Основная цель — b2b-сегмент: авиакомпании, логистика, государственные структуры.
👥 Волонтёры, устанавливающие оборудование, получают расширенную аналитику и доступ к онлайн-карте.
💬 Разработчики ищут инвестора для масштабирования. Среди потенциальных партнёров — 2ГИС.
При поддержке «Авиарадар» может стать национальной платформой авианаблюдения, особенно важной в условиях текущей геополитики.
#Авиарадар#Flightradar24#импортозамещение#авиация#технологии#RaspberryPi#логистика#гражданскаяавиация#авиатрекер#ИТ#наблюдение#Россия#инновации#b2b#авиапром#слежение