Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
🚢Lila Global заключила первую в году сделку по утилизации балкера типоразмера Capesize.
Дубайская судоходная компания Lila Global, связанная с предпринимателем Anil Sharma, продала на слом балкер типоразмера Capesize "Beihai" (176 000 dwt, 1993 года постройки) для переработки в Бангладеш.
Это первая сделка по утилизации балкера типоразмера Capesize в 2026 году.
Судно завершает карьеру под флагом Lila Global, однако изначально было построено как "China Steel Excellence" для китайского оператора.
В 2025 году Lila Global обеспечила около половины утилизированного тоннажа балкеров типоразмера Capesize, подтверждая активную позицию в сегменте краткой эксплуатации и последующей утилизации старого тоннажа.
📌Lila Global основана в 2016 году и является частной судоходной компанией со штаб-квартирой в Дубае. Компания контролируется частными инвесторами, связанными с контролирующим владельцем - Анилом Шармой.
#drybulk#Capesize#shiprecycling#Bangladesh#shippingmarket
🚢GMS: эскалация на Ближнем Востоке дестабилизирует рынки и тормозит рециклинг.
Глобальный покупатель флота на утилизацию - GMS - отмечает резкий рост волатильности на фоне конфликта на Ближнем Востоке.
Нефть за выходные подскочила более чем на 10% — с ~$63 до ~$71,9 за баррель.
Индекс Baltic Exchange прибавил 1,1%, при этом сегменты Capesize, Panamax и Supramax выросли на 0,2%, 1,4% и 3% соответственно — динамика пока сдержаннее, чем у нефтяных фьючерсов.
Валюты стран-основных переработчиков лома и цены на судовой листовой прокат снизились, пусть и умеренно. Активность на рынке утилизации отошла на второй план: продавцы и покупатели выжидают на фоне неопределённости и дефицита тоннажа, усугублённого геополитикой.
По оценке GMS,масштаб регионального шока сопоставим с периодом COVID по степени прямого и глобального воздействия.
Для отрасли это означает повышенную паузу в S&P-рециклинге, рост цен на бункер и риск дальнейшей турбулентности при затяжной эскалации.
📌GMS (Gulf Maritime Services LLC) — международный покупатель флота, основанный в 1992 году, специализируется на купле-продаже судов на утилизацию. Компания является частной и принадлежит основателям.
#ShipRecycling#GMS#OilPrices#DryBulk#Geopolitics
🚢Ship Recycling: рынок утилизации сохраняет стабильность (Week 08, 16–22 февраля 2026).
Согласно отчету Athenian Shipbrokers S.A., на 8-й неделе 2026 года рынок утилизации флота демонстрирует стабильный тренд.
Цены покупки судов на утилизацию в основных странах-реципиентах остаются на устойчивых уровнях без резких колебаний.
По индикативам $/LDT:
Индия — Bulker: $400; Tanker: $420; Container: $430.
Бангладеш — Bulker: $405; Tanker: $425; Container: $435.
Пакистан — Bulker: $425; Tanker: $445; Container: $455 (премия к региону).
Турция — Bulker: $276; Tanker: $286; Container: $296.
Пакистан сохраняет ценовое лидерство по всем типам тоннажа, что отражает ограниченное предложение качественных корпусов и конкуренцию за крупнотоннажные единицы.
Индия и Бангладеш удерживают паритет с умеренной разницей по типам судов.
Турция остается вне ценового диапазона Южной Азии, что обусловлено структурой спроса и макроэкономическими факторами.
Долгосрочная динамика демонтажа (2011–2026) подтверждает снижение объемов в последние годы: после пиков 2012–2016 годов текущие уровни остаются существенно ниже исторических максимумов, что поддерживает ценовую устойчивость на фоне ограниченного притока старого тоннажа.
📌Athenian Shipbrokers S.A. — греческая брокерская компания, основанная в 1970-х годах, специализируется на S&P, чартеринге и аналитике рынков судоходства. Компания является частной и принадлежит греческим акционерам-основателям.
#ShipRecycling#DemolitionMarket#SNP#ShippingMarkets#MaritimeAnalytics
🚢ILO запускает пилотную схему защиты работников судоразделки в Бангладеш.
International Labour Organization (ILO) совместно с BIMCO запустила пилотную программу страхования производственных травм (Employment Injury Scheme — EIS) для работников судоразделочных верфей в Бангладеш — крупнейшей стране по утилизации судов в мире.
Система действует по принципу отраслевого страхового фонда. Продавцы судов, направляемых на утилизацию, могут внести $0,5 за тонну лёгкого водоизмещения (LDT) в фонд, подписав специальное письмо о намерениях, разработанное BIMCO, что позволит обеспечить компенсации рабочим и их семьям в случае тяжёлых травм или гибели.
Участие в программе добровольное и рассматривается как переходный механизм. В дальнейшем Бангладеш планирует внедрить национальную систему страхования производственных травм, которая станет обязательной и должна вступить в силу в июле 2027 года.
Инициатива направлена на повышение стандартов безопасности и соответствие требованиям Гонконгской международной конвенции по безопасной и экологически ответственной переработке судов.
📌International Labour Organization (ILO) — специализированное агентство ООН, занимается разработкой международных стандартов труда и защитой прав работников. Организация финансируется государствами-членами и международными партнёрами.
#ShipRecycling#Bangladesh#ILO#BIMCO#MaritimeSafety
🚢ЕС утвердил первый немецкий судоремонтный завод в списке разрешённых для конвенционной утилизации.
Европейская комиссия приняла 15-ю редакцию European List of Ship Recycling Facilities, включив в неё первую верфь в Германии (г. Эмден).
Список также продлевает аккредитацию четырёх верфей в Дании, Эстонии, Литве и Испании, а также одной площадки в Турции. Одновременно три предприятия исключены: финская верфь не продлила разрешение, площадка в Северной Ирландии не предоставила требуемые данные, а одна турецкая верфь признана несоответствующей требованиям EU Ship Recycling Regulation (в части защиты береговой линии).
Включение в список позволяет предприятиям утилизировать крупнотоннажные суда под флагом стран ЕС при соблюдении строгих экологических, трудовых и стандартов безопасности. Обновлённый перечень включает 41 площадку: 30 в Европе (ЕС, Норвегия, Великобритания), 10 в Турции и 1 в США.
Для судоходной отрасли решение усиливает роль регулируемой утилизации и поддерживает развитие циркулярной экономики, включая переработку стали и вторичных материалов.
Напомним, что с 31 декабря 2018 года суда под флагом ЕС обязаны проходить утилизацию только на площадках из Европейского списка. При этом европейские судовладельцы контролируют около 30% мирового флота по дедвейту.
📌European Commission — исполнительный орган Европейского союза, созданный в 1958 году, отвечает за разработку и реализацию законодательства ЕС. Финансируется из общего бюджета Европейского союза.
#ShipRecycling#EURegulation#CircularEconomy#MaritimePolicy#Sustainability
🚢Рынок утилизации флота: Индия замедляется, Бангладеш оживляется.
На фоне геополитической напряжённости и колебаний валют мировой рынок судоразделки демонстрирует разнонаправленную динамику в ключевых центрах Южной Азии.
В Индии ожидается существенное замедление активности после объявления форс-мажора по поставкам природного газа, используемого для операций по резке металла.
Ограничение энергоснабжения может привести к сокращению производственных мощностей на верфях и увеличению сроков переработки. При этом ограниченное число доступных слотов для утилизации может поддержать рост цен.
В Бангладеш рынок показывает признаки восстановления. Покупатели проявляют интерес к доступному тоннажу, а приход нового правительства, считающегося более ориентированным на бизнес, улучшает рыночные ожидания и создаёт предпосылки для дальнейшего роста активности.
В Пакистане рынок остаётся практически без изменений. Региональная напряжённость, связанная с конфликтом вокруг Ирана, сдерживает сделки, однако отдельные покупатели продолжают проявлять интерес при ориентировочных уровнях около $410/LDT.
В Турции ситуация остаётся стабильной: цены на металлолом удерживаются на прежнем уровне, хотя увеличение числа судов-кандидатов на разделку может оказать давление на рынок в ближайшей перспективе.
📌Best Oasis Ltd. — международная компания, специализирующаяся на покупке судов для утилизации и аналитике рынка судоразделки. Компания является частной и работает как "cash buyer" на глобальном рынке.
#ShipRecycling#ScrapMarket#Shipbreaking#BestOasis#ShippingIndustry