Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
✅#PRCL Parcl V3 Wind Down
#HIGH
Status: Completed
После [принятия PIP 11] команда Parcl объявила о сворачивании работы Parcl V3 в рамках подготовки к запуску V4. Рынки теперь доступны только для закрытия позиций, открытие новых позиций невозможно, а прием депозитов приостановлен.
Закрытие позиций начнется 20 апреля 2026 года без взимания комиссий. Вывод маржи доступен в любое время, а вывод средств LP будет открыт в течение шести месяцев. Команда отмечает, что подробности о devnet V4 ожидаются «в ближайшее время».
Parcl | Снятый с производства товар
📅 13.04.2026 7:45:00
#SmartEvent@CryptoAttackBot
✅#PRCL Parcl Chain
#HIGH
Status: In-Progress
После [утверждения] PIP-11 и запуска Parcl V4 команда приступит к созданию Parcl Chain — специализированной цепочки приложений, которая будет служить уровнем выполнения для биржи Parcl V4, при этом хранение залогового обеспечения и расчеты будут по-прежнему осуществляться на Solana. Цепочка использует консенсус с византийской отказоустойчивостью (BFT), отличающийся детерминированным выбором лидера по круговой системе, временем формирования блока менее секунды и окончательностью одного блока, что требует подписей от двух третей валидаторов. В этой конструкции отсутствует вероятностная окончательность и реорганизация цепочки. Состояние надежно сохраняется в журнале предварительной записи и детерминированно восстанавливается из снимков после сбоя узла, включая одновременную потерю всех узлов.
При запуске три валидатора, управляемых Parcl, будут реплицировать состояние для обеспечения отказоустойчивости. Набор валидаторов рассчитан на постепенное расширение за счет независимых операторов, при этом в качестве конечного механизма участия будет использоваться стейкинг PRCL. Порядок транзакций определяется детерминированным алгоритмом FIFO без механизма приоритетных комиссий и возможности переупорядочения. При запуске транзакции будут бесплатными, а газ, деноминированный в PRCL, можно будет включить через настройки валидатора без обновления протокола.
При создании учетной записи в Parcl V4 генерируется ключ подписи Ed25519, находящийся в самостоятельной хранении. Ключ создается внутри AWS Nitro Enclave — аппаратной изолированной среды без доступа к сети, постоянного хранилища или возможности оператора просматривать память. Ключи шифруются в состоянии покоя с помощью AWS KMS и контроля доступа на основе аттестации. Ни один человек, оператор или администратор облака не может получить доступ к открытому тексту. Пользователи могут в любой момент экспортировать свой закрытый ключ для автономного хранения в автономном режиме, при этом не требуется программное обеспечение кошелька или фраза-семенная фраза. Для вывода средств требуются криптографические доказательства с несколькими подписями от двух третей валидаторов, и необходимо выждать 24-часовое окно безопасности между запросом и получением средств. Лимит на вывод средств за эпоху ограничивает риски в случае взлома ключа валидатора. Планируется интеграция с Circle CCTP, что позволит осуществлять депозиты в USDC напрямую из цепочек EVM, включая Base и Arbitrum.
Все данные цепочки будут общедоступны через полный REST API и каналы WebSocket. Сюда входят книги заказов, сделки, ставки финансирования, цены оракулов, позиции и ликвидации. Планируется создание общедоступного блок-эксплорера. Управление протоколом устанавливает полномочия оракула, которые валидаторы проверяют криптографически. Настраиваемый автоматический выключатель останавливает поступление цен, если движение превышает заданный порог.
Parcl | Запуск основной сети или создание новой сети
📅 08.04.2026 7:30:26
#SmartEvent@CryptoAttackBot
🔓VCs Are Ready To Sell: These Unlocks Could Crash Prices
Tomorrow, VC investors in #JTO will have $12M unlocked, which may impact the price. Major VC unlocks of #ID, #SAGA, #PRCL, and #DBR tokens in March and April could also influence market prices.
📌 Share and Join 🌕@Crypto_Medias