Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
【TokenPocket Retweeted】
Retweeted SimplexCC : We’re thrilled to announce a new partnership with TokenPocket_TP🚀
Now 20 million + users can securely buy tokens through SimplexCC on the Token Pocket platform 😎
Start your crypto journey with #Simplex today!
#Buycrypto#Onramp
⏵ [[1]](https://video.twimg.com/ext_tw_video/1699414869848571904/pu/vid/avc1/1200x674/RdzHWTjwneU4r8Bm.mp4?tag=12)
【Details】https://twitter.com/SimplexCC/status/1699417487580782760
【Powered By】Crypto Box
#cplusplus#high_performance#interior_point_method#linear_optimization#mixed_integer_programming#parallel#quadratic_programming#simplex
HiGHS is a free, high-performance software that solves large and complex optimization problems like linear, quadratic, and mixed-integer programming. It works fast on many computers, including Linux, MacOS, and Windows, without needing extra software. You can use it through various programming languages like Python, C, C#, and Fortran, making it easy to integrate into your projects. HiGHS supports both serial and parallel computing, and it is advancing GPU acceleration for even faster solutions. This helps you efficiently find the best solutions for planning, scheduling, and decision-making problems in science, engineering, and business. Installation is straightforward, and detailed documentation is available to guide you[1][2][3][4].
https://github.com/ERGO-Code/HiGHS
🚀Degen Privacy Stack 2026: Own Your Comms with No-KYC Crypto Tools – From eSIMs to Encrypted Chats!
here's the ultimate blueprint for true digital sovereignty – all powered by crypto, privacy keys, and zero KYC hassles. Stay ghosted in a surveillance world:
- Degenphone eSIM Mastery: Tokenize real eSIM phone numbers as NFTs on Solana/TON. Own a working number for SMS, calls, and data plans – mint, trade, activate anonymously via blockchain. No ID, no docs – just your wallet and privacy keys for instant, traceless global connectivity.
- tMail for Ephemeral Emails: Grab disposable, auto-expiring emails without KYC. Crypto payments optional for premium anonymity – link to your setups for secure logins that vanish post-use, keeping your real identity locked away.
- Nostr Protocol Freedom: Decentralized social with pub/priv keys – no email/phone signup, pure P2P relays. Zap sats via Lightning, build uncensorable networks. Own your data, migrate keys seamlessly for ultimate control.
- SimpleX Chat Supreme: E2EE messenger with no user IDs – connect via QR/one-time links. Amp up with white noise vector sessions: Inject random noise into traffic for anti-analysis, quantum-resistant encryption, and self-destructing messages.
- Vector Messenger Edge: Nostr-based, zero-metadata encryption for texts, media, voice. BIP-39 wallet integration turns your account into a crypto vault – plausible deniability and no-compromise privacy.
- White Noise App Stealth: Nostr-powered secure messenger with MLS end-to-end encryption. Forward/post-compromise security, identity-free – massive scalable groups without leaks.
- 0xChat Lightning Vibes: Nostr secure chat with private key login – no reg, E2EE DMs/groups, voice/video, Cashu/Lightning payments. Encrypted everything, alias keys for extra secrecy.
- Video Calls on Honey HiveTalk: Nostr-first conferencing at https://honey.hivetalk.org – Lightning-powered rooms, desktop-optimized for private group calls. Zap to join/active, no KYC barriers.
Stack these for crypto trades, activism, or pure freedom – own your phone, email, chats with crypto keys only. No Big Tech oversight!
#DegenPrivacy#NoKYC#CryptoSovereignty#Nostr#SimpleX#VectorMessenger#WhiteNoiseApp#0xChat#Degenphone#tMail#HiveTalk#PrivacyTools2026
Your fave stack addition? Zap or reply! 🔒👻