Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
🚢Китай развивает нулевую эмиссию на внутренних водных путях через новую инициативу.
Компании Wah Kwong NatPower и Huzhou Wuxing Ruituo Energy подписали меморандум о создании коридоров с нулевыми выбросами на внутренних водных путях Китая.
Проект предполагает развитие инфраструктуры электрификации, включая сети зарядки и станции замены аккумуляторов для судов.
На первом этапе инициатива будет реализована в регионе Ханчжоу–Цзясин–Хучжоу (провинция Чжэцзян) с последующим масштабированием на другие ключевые водные маршруты страны.
В проект также интегрированы цифровые платформы и системы мониторинга выбросов, что позволит отслеживать экологический эффект и оптимизировать эксплуатацию флота.
Ключевым фактором успеха подобных проектов становится синхронизация развития флота и энергетической инфраструктуры.
Интеграция зарядных мощностей, цифровых решений и операционных сервисов в единую систему позволяет повысить эффективность и масштабируемость модели, что потенциально делает Китай одним из лидеров в переходе к «зеленому» внутреннему судоходству.
📌Wah Kwong Maritime Transport Holdings — основана в 1952 году, частная судоходная компания, принадлежит семье Танг (Гонконг).
#decarbonization#inlandshipping#China#energy#shipping
🚢China Merchants заказывает балкеры на СПГ-топливе для работы на реке Янцзы.
Подразделение China Merchants Group — Changhang Freight (Zhoushan) — разместило заказ на два сухогрузных судна дедвейтом по 20 000 тонн с двигателями, работающим на СПГ для работы на реке Янцзы.
Строительство будет осуществляться на верфи Jiangxi New Jiangzhou Shipbuilding Heavy Industry. Суда разработаны как балкеры типа "река-море", способные работать как на внутренних водных путях Янцзы, так и на прибрежных маршрутах.
Каждое судно будет оснащено двумя главными двигателями мощностью по 2 000 кВт и системой СПГ-пропульсии. Ожидается, что применение СПГ позволит сократить выбросы CO₂ более чем на 20% по сравнению с традиционным мазутным топливом.
Проект поддерживает стратегию Китая по декарбонизации судоходства на крупнейшей внутренней транспортной артерии страны и демонстрирует растущую роль экологичных технологий в речном и прибрежном флоте.
📌China Merchants Group — китайская государственная корпорация, основанная в 1872 году, один из крупнейших мировых конгломератов в области судоходства, портов и логистики. Контрольный пакет принадлежит государству КНР.
#InlandShipping#LNGFuel#ChinaMerchants#YangtzeRiver#GreenShipping
🚢Грузопоток по реке Мадейра в Бразилии вырос на 20% в 2025 году несмотря на низкий уровень воды.
По данным National Agency for Waterway Transportation, объём перевозок по реке Мадейра достиг 12,1 млн тонн в 2025 году, что на 20,4% больше, чем годом ранее. Коридор между Порту-Велью и бассейном Амазонки сохранил операционную устойчивость даже в период засухи и пониженных уровней воды.
Министерство портов и аэропортов Бразилии отметило, что активность поддержала аграрную и торговую цепочку Северного региона.
Структура грузов:
✔️ Соя — 7 млн тонн
✔️ Кукуруза — 3 млн тонн
✔️ Нефтепродукты — 1 млн тонн
Регулятор подчеркнул, что постоянный гидрологический мониторинг и технические меры позволили снизить риски и обеспечить предсказуемость для операторов внутреннего водного транспорта.
Рост перевозок по внутренним водным путям подтверждает стратегическую роль речной логистики в экспортоориентированной модели Бразилии, особенно в условиях климатической волатильности.
📌National Agency for Waterway Transportation (ANTAQ) создана в 2001 году и является государственным регулятором водного транспорта Бразилии, подчинённым федеральному правительству.
#inlandshipping#Brazil#agrilogistics#rivertransport#SouthAmerica
🚢Wynnchurch Capital приобретает судостроительный бизнес Arcosa Marine, специализирующийся на речных и морских баржах.
Инвестиционная компания Wynnchurch Capital подписала окончательное соглашение о покупке подразделения Arcosa Marine Products у Arcosa. Сделка предполагает выделение морского направления в самостоятельный бизнес.
Базирующаяся в Луизиане Arcosa Marine производит сухогрузные и танкерные баржи, а также комплектующие для рынка внутренних водных путей США.
Компания управляет шестью производственными площадками и обслуживает клиентов, перевозящих сельхозпродукцию, инертные материалы, нефтепродукты и другие навалочные грузы по системам рек Миссисипи и Огайо.
Покупатель рассматривает актив как ключевой элемент транспортной инфраструктуры США с устойчивыми долгосрочными драйверами спроса.
В качестве самостоятельной структуры Arcosa Marine получит более сфокусированную стратегию развития и гибкость для органического и M&A-роста.
Для отрасли внутреннего судоходства США сделка сигнализирует о продолжающемся интересе частного капитала к сегменту судостроения на фоне стабильных грузопотоков по внутренним водным артериям.
📌Wynnchurch Capital — американская компания, специализируется на инвестициях в промышленный и инфраструктурный сектор.
Wynnchurch Capital — это частная инвестиционная компания, которая была основана Джоном Хатерли в 1999 году, специализирующаяся на частных инвестициях (private equity) на среднем рынке. Компанией управляет команда партнеров, включая Джона Хатерли, Грега Глисона и Фрэнка Хейза.
#InlandShipping#Barges#PrivateEquity#USInfrastructure#MarineIndustry