Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
👀Clash of Clans Series To 🅽🅴🆃🅵🅻🅸🆇🎬🍿
🥳🎉IT'S FINALLY HAPPENING!!! Netflix is bringing the world of CLASH to life as an animated series on TV.
📌The work is currently in pre-production, and a release date has not been set yet. In case you're interested, there's a trailer available on Netflix, feel free to watch! 🎬
#COC game is running a new season called "Cyberclash". Learn more about the event time, new golden pass update and all rewards you can get: 👉Clash of Clans July 2025: Exciting Events and Rewards Await
🎮Join the New "Cyberclash" Season in Clash of Clans
⚡️Catizen Announcement: Massive Gift for COC Players
#COC#farming
Catizen Announcement unveiled a significant gift for Wipe Test players of COC. Players can now enjoy full-auto $COC farming, enhancing their gaming experience with 3 free ships and 1000 Diamonds for sailing mining.
Source: link
@tonlines
⚡️Catizen Announcement: COC Wipe Test Now Live!
#Diamonds#COC
The Catizen Announcement channel reveals the launch of the COC Wipe Test. Participants can try it first and earn 2x Diamonds for every USD spent during the test, redeemable at the official launch.
Source: link
@tonlines
Sponsored
Navigating #Ethiopia’s #PVoC Requirements: TÜV Rheinland Supports Exporters for Smooth Market Access
As Ethiopia continues strengthening its quality infrastructure and import control framework, exporters shipping regulated products to the country are reminded of the importance of complying with the Pre-Export Verification of Conformity (PVoC) program prior to shipment.
The PVoC program, overseen by the Ethiopian Conformity Assessment Enterprise under the Ministry of Trade and Regional Integration (#MoTRI), requires regulated products to undergo conformity assessment procedures before export to Ethiopia.
A Certificate of Conformity (#CoC) must be issued to ensure smooth customs clearance and prevent delays at the port of entry.
For exporters, understanding the applicable certification route, documentation requirements, and product scope is critical to avoiding unnecessary costs, shipment holds, or re-exports.
For more click the link: https://addisstandard.com/?p=55617
Sponsored post
#TÜV_Rheinland Further Strengthens Role in PVoC Sector, Becoming a Strategic Authorized Body for Inspection and Certification under ECAE - #MOTRI
Agreement signed on 3rd December 2025 strengthens safe, compliant market access to Ethiopia
Addis Abeba, 3rd December 2025 TÜV Rheinland announced it has signed a new contract with the #Ethiopian Conformity Assessment Enterprise (#ECAE), under the Ministry of Trade and Regional Integration (#MoTRI), authorizing TÜV Rheinland to conduct inspections, testing (where applicable), and issue Certificates of Conformity (#CoC) for regulated products exported to Ethiopia under the country’s Pre-Export Verification of Conformity (#PVoC) program.
The PVoC framework helps protect consumers and the environment from unsafe or substandard imports and streamlines customs clearance by ensuring regulated products comply with Ethiopia’s national standards before shipment.
“This partnership reflects a shared commitment to safety, quality, and fair trade,” said Mr. Fares Naouri, Senior Vice President Government Inspections and International Trade (#GIIT) - TÜV Rheinland. “With our global laboratory network and experienced technical teams, exporters and importers alike can rely on efficient and transparent conformity assessment services.”
Under the agreement, TÜV Rheinland is authorized to assess technical documentation, perform consignment & factory inspections, and conduct laboratory tests. The certificate of Conformity (COC) is issued as a confirmation of successful completion of the compliance verification procedure.
https://addisstandard.com/?p=54647