Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
⚡️COSCO приостанавливает грузоперевозки
В связи с обострением конфликтов в ближневосточном регионе и из-за ограничений на судоходство через Ормузский пролив компания COSCO SHIPPING LINES приостанавливает:
❗️ все новые бронирования из любой точки мира в Объединенные Арабские Эмираты (за исключением Хор-Факкана и Эль-Фуджайры), Бахрейн, Ирак, Королевство Саудовская Аравия (за исключением Джидды) и Кувейт
❗️ все новые рейсы из ОАЭ (за исключением Хор-Факкана и Эль-Фуджайры), Катара, Бахрейна, Ирака, Королевства Саудовская Аравия (за исключением Джидды) и Кувейта по всему миру
В отношении груза, уже находящегося на борту, мы проводим комплексную оценку планов по его последующей утилизации, включая поиск и подтверждение потенциальных портов для выгрузки в случае непредвиденных обстоятельств и решение других сопутствующих вопросов
Все соответствующие положения будут строго соблюдаться в соответствии с условиями коносамента компании COSCO SHIPPING LINES
#COSCO#грузоперевозки#логистика
📲МАХ
🚢COSCO Shipping Ports фиксирует умеренный рост прибыли на фоне сложного рынка
COSCO Shipping Ports по итогам 2025 года увеличила чистую прибыль на 1.1% - до $312 млн, при росте выручки на 11% до $1.67 млрд. Контейнерооборот вырос на 6.2% и достиг почти 153 млн TEU.
Несмотря на давление со стороны замедления мировой торговли и геополитики, отдельные активы показали сильную динамику: терминал в Пирее увеличил прибыль до $41 млн, а Guangzhou South China Oceangate Terminal — до $28 млн.
Испанский бизнес также продемонстрировал рост за счёт увеличения ставок и объёмов.
В то же время новые проекты остаются под давлением: терминал CSP Chancay в Перу зафиксировал убыток на этапе выхода на полную мощность. Рост финансовых расходов дополнительно ограничил итоговую прибыль.
С операционной точки зрения, результаты отражают переход отрасли к более умеренному росту: при увеличении объёмов прибыльность остаётся под давлением затрат и инвестиционного цикла.
📌COSCO Shipping Ports Ltd. — основана в 1994 году, глобальный портовый оператор, входит в китайскую государственную группу COSCO Shipping, контролируемую правительством КНР.
#Ports#Shipping#Containers#COSCO#Logistics
🚢COSCO возобновляет бронирования в Персидский залив на фоне частичной стабилизации.
Китайская COSCO Shipping Lines возобновила приём новых букингов контейнерных грузов из Азии в страны Персидского залива (ОАЭ, Саудовская Аравия, Катар и др.), отменив ограничения, введённые в начале марта.
Решение отражает осторожный оптимизм рынка, однако проход через Ормузский пролив по-прежнему требует согласования с Ираном (что разрешено Китаю), а около 130 контейнеровозов остаются заблокированными в регионе.
С операционной точки зрения, рынок функционирует в режиме ограниченного доступа: часть потоков восстанавливается, но сохраняются высокие риски, дополнительные издержки и снижение надёжности расписаний.
Для отрасли это означает структурные изменения: отсутствие альтернативных маршрутов в Персидский залив усиливает зависимость от геополитики и ведёт к «разделению» глобальной сети контейнерных перевозок.
📌COSCO Shipping Lines Co., Ltd. — основана в 2016 году (в результате объединения COSCO и China Shipping), крупнейшая государственная контейнерная линия Китая; входит в группу COSCO Shipping, контролируемую правительством КНР.
#Shipping#Containers#COSCO#Logistics#Geopolitics
🚢 Компания Cosco, одна из крупнейших государственных контейнерных линий Китая, запланировала приобретение 14 новых контейнеровозов на сумму около $3,08 млрд. Эти суда должны быть введены в эксплуатацию в третьем квартале 2028 года.
🔍 Несмотря на текущие торговые потрясения и нестабильность мировой экономики, Cosco продолжает расширять свой флот, демонстрируя уверенность в будущем морских перевозок и стратегическом росте.
🌐 Новые судна укрепят позиции компании на глобальном рынке, обеспечивая более эффективные и экологически чистые логистические решения в условиях растущего спроса на морские грузоперевозки.
____
#ТисЛоджистик🦏
#Cosco
#КонтейнерныйФлот
#ГлобальнаяЛогистика
CMA CGM является единственным из восьми линейных операторов, входящих в глобальные альянсы, который задействует на совместных сервисах менее 40% своего флота, сообщает Alphaliner.
🌐 CMA CGM состоит в альянсе OCEAN, где также участвуют COSCO и EVERGREEN. Это крупнейший из трех глобальных альянсов, в рамках которого на совместных сервисах задействован флот с совокупной вместимостью 4,4 млн TEU, что составляет более 13% всего мирового контейнерного флота. На долю CMA CGM приходится ровно треть всей вместимости на сервисах альянса, а также чуть более трети совокупного флота французского оператора.
📊 Прослеживается обратная закономерность: чем крупнее оператор, тем меньше доля флота, используемая на совместных сервисах в рамках альянса. Самая высокая доля у операторов, замыкающих топ-10 мировых линий, таких как тайваньские Yang Ming и Evergreen, а также корейская HMM. Исключением является Maersk, который, будучи вторым крупнейшим оператором после MSC, отдал свыше половины своей совокупной вместимости флота для совместных операций с Hapag Lloyd.
🚢 Два оператора из десятки крупнейших линий не входят в альянсы. Крупнейшая в мире линия MSC контролирует 21% рынка по рабочей вместимости, сопоставимой с суммарной вместимостью альянсов OCEAN и PREMIER, и не нуждается в партнерах. Израильский ZIM выступает в роли нишевого оператора, выходя на глобальный рынок лишь в периоды пикового спроса, обусловленного кризисами.
____
#ТИСЛОДЖИСТИК🦏
#CGM
#COSCO
#CMA
🚢COSCO Shipping приостанавливает новые бронирования на маршрутах Ближнего Востока.
Контейнерное подразделение китайского логистического гиганта COSCO Shipping Lines объявило о приостановке всех новых бронирований грузов на маршрутах в порты Ближнего Востока и из них.
Ограничения затронули перевозки в ОАЭ, Саудовскую Аравию, а также Бахрейн, Ирак и Кувейт. Решение связано с эскалацией конфликта в регионе и ограничениями судоходства через Ормузский пролив.
Компания также заявила, что оценивает возможные альтернативные решения для грузов, уже находящихся в пути, включая перенаправление на другие порты выгрузки.
Для контейнерного рынка этот шаг одного из крупнейших перевозчиков мира усиливает риски нарушения цепочек поставок в регионе Персидского залива и может привести к перераспределению потоков через альтернативные хабы в Азии и Европе.
📌COSCO Shipping Lines Co., Ltd. - китайская государственная контейнерная линия, основанная в 1961 г. Компания входит в группу China COSCO Shipping Corporation, одну из крупнейших судоходных и логистических корпораций мира, полностью принадлежащую государству КНР.
#ContainerShipping#COSCO#Hormuz#SupplyChains#GlobalTrade
🇵🇪 CHANCAY: EL PUERTO QUE PARTE EN DOS AL PERÚ (Y AL MUNDO)
Mientras el Perú celebra su nuevo megapuerto, EE.UU. y China se lo disputan a base de comunicados.
---
🇺🇸 EE.UU. suelta la bomba:
“Perú podría quedar imposibilitado de supervisar Chancay bajo propietarios 'chinos depredadores'. El dinero barato chino cuesta soberanía.”
Traducción:
❌ No es una inversión, es una conquista silenciosa.
❌ Cosco no construye, ancla territorio.
❌ Lo que hoy es puerto, mañana es base logística con dueño extranjero.
---
🇨🇳 China responde:
“Fuerte insatisfacción. Fabricación y difamación flagrantes.”
Traducción:
✅ “Nosotros ponemos el dinero, ustedes el suelo. ¿El problema?”
✅ “Esto es comercio, no geopolítica… aunque mandemos un portaviones cada dos meses.”
---
🧠 Lo que nadie dice abiertamente:
🔹 Cosco no alquila: administra.
🔹 El Estado peruano cobra y se desarrolla.
🔹 La supervisión real está en Pekín.
🔹 EE.UU. llega tarde y con advertencias que suenan a pésame más que a defensa.
---
🌎 Chancay no es un puerto: es la pieza china en el tablero sudamericano.
· Punto de salida directo al Pacífico.
· Ruta exprés a Asia.
· Competencia directa a México, Panamá y California.
Y Perú, en el medio, con soberanía casi nula y un contrato ya negociado.
---
📌 Resumen para no perderse:
🇺🇸 dice: “Te van a quitar el puerto.”
🇨🇳 dice: “No te quito nada, tú eres el dueño… pero yo administro, opero, facturo y me quedo.”
🇵🇪 dice: “Gracias a los dos. ¿Y mi mordida?.”
---
🧩 Mientras tanto, la pregunta incómoda:
¿Cuándo fue la última vez que EE.UU. defendió la soberanía real sobre una infraestructura clave de un país extranjero?
---
#Chancay#Perú#China#EEUU#Geopolítica#Cosco#Soberanía#PuertoBajoControl
Fuente:
https://rpp.pe/peru/actualidad/peru-el-centro-de-los-roces-entre-estados-unidos-y-china-por-el-puerto-de-chancay-noticia-1675598