Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
🚀 Economist Win Thin Reflects on Global CPI Trends
Economist Win Thin has observed that, in retrospect, the Consumer Price Index (CPI) data for March in most countries worldwide was slightly below expectations, with the exception of the United States. According to Jin10, many other countries are increasing fuel subsidies to alleviate the impact on consumers. However, Thin warns that this approach may lead to significant fiscal burdens, making it unsustainable in the long term.
#Economist#CPI#GlobalTrends#FuelSubsidies#FiscalBurden#Inflation
🌍 One question. Global consequences.
Will Russia and Ukraine reach a ceasefire by March 31, 2026?
Diplomacy, pressure, fatigue — or escalation?
Drop your take 👇
https://edgemarket.ai/bnb/social-media/Russia%20x%20Ukraine%20ceasefire%20by%20March%2031,%202026/statistics/69830479ff612403d86bf273
#Geopolitics#Ceasefire#WorldNews#GlobalTrends#ConflictAnalysis#FutureEvent
#The_Fortune🇺🇸📕[PDF]⬇️
#December2025
#January2026
#Monthly_Magazines
For learning, for free(dom).
@backupofmagazines
Global coverage this week tracks how rising tech power reshapes markets and geopolitics as China accelerates drug manufacturing, automation and green innovation with implications for global supply chains amid growing #Geopolitics tension. U.S. markets confront an expanding #AI boom, from Anthropic’s trust-first model to questions around Nvidia’s dominance, while investors chase new strategies in an increasingly volatile #MarketWatch environment. Culture and consumer shifts surface in Roblox’s evolution, the booming beauty sector and wellness travel trends. Meanwhile climate action, urban sustainability and energy transitions intensify worldwide under mounting #ClimateCrisis pressure, defining a rapidly changing global landscape shaped by #GlobalTrends.
#The_Barron's 🇺🇸📕[PDF]⬇️
24 #November2025
#Weekly_Magazines
For learning, for free(dom).
@backupofmagazines
Europe’s renewed market momentum anchors this Barron’s issue, where analysts see brighter days ahead amid rising profits and shifting geopolitics—an outlook shaped by #MarketWatch forces and #GlobalTrends. Nvidia’s strong guidance fuels confidence in the #AI boom, even as investors navigate #Volatility across equities and buffer ETFs. Caution rises around India’s IPO wave, reinforcing a broader #RiskManagement mindset. With bond vigilantes returning and central-bank uncertainty growing, the magazine highlights why disciplined strategy remains essential in today’s #Finance landscape.
#The_Science🇺🇸📕[PDF]⬇️
13 #November2025
#Weekly_Magazines
For learning, for free(dom).
@backupofmagazines
This issue dives into breakthroughs reshaping biology and energy as researchers confront rising geopolitical limits. From #AI-driven epigenetics to #SyntheticBiology advances, the issue tracks how innovation pushes ahead despite tensions over China-US research ties. New micro-robots navigating the bloodstream and faster-charging batteries highlight a surge in #DeepTech momentum. Climate resilience, #PandemicPreparedness, and EU chemical reforms underscore global policy stakes. Studies on dog domestication, brown dwarfs, and marine recovery after extinction broaden the scientific lens. A reminder that #ScienceMatters even as politics shift—innovation continues to define our shared future. #TechNews#GlobalTrends#ResearchUpdates
#The_National_Geographic🇺🇸📕[PDF]⬇️
#November2025
#Monthly_Magazines
For learning, for free(dom).
@backupofmagazines
This issue tours big frontiers: a colossal #NuclearFusion tokamak in France promises star power on Earth; botanists curate the world’s deadliest garden; a teenage Sherpa resets who belongs on alpine peaks; macro art peers through a bug’s eye; new science reframes adult #ADHD; crested gibbons show robotlike dances; wildfire imagery from the #SierraNevada; archaeologists ink themselves to decode ancient tattoos; and medics test human hibernation for deep-space care. Essential reading for explorers and pragmatists alike. #NationalGeographic#Climate#Energy#Biodiversity#Wildfire#Photography#Neuroscience#Space#Innovation#Science#Sustainability#Tokamak#Fusion amid accelerating #AI research and #GlobalTrends, shaping tomorrow’s decisions.