Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Canaletas para tener los cables ordenados
Las canaletas para cables son un gran instrumento para mantener el orden y la seguridad en el hogar.
[...] son una solución útil para evitar ese lío monstruoso de cables que se nos organiza a veces en determinadas zonas de la casa.
Mira los tipos que puedes encontrar según tus necesidades...
➡️Leer más#canaletas#cables#electricidad
🚢Next Geosolutions получает контракт €28 млн на обследование трассы подводного кабеля в Италии.
Консорциум под руководством Next Geosolutions выиграл контракт стоимостью более €28 млн на проведение морских изысканий и экологической оценки для HVDC-проекта Milan–Montalto.
Заказчиком выступил оператор электросетей Terna в рамках программы Hypergrid.
Проект предусматривает прокладку подводного кабеля протяженностью около 280 км, соединяющего регионы Лацио и Ломбардия. Работы включают высокоточные геофизические исследования морского дна, анализ его структуры и оценку биологических сообществ вдоль трассы.
С технической точки зрения проект требует использования специализированного флота для проведения батиметрических, геофизических и экологических исследований. Это ключевой этап подготовки перед укладкой кабеля, обеспечивающий безопасность и эффективность последующих работ.
С отраслевой точки зрения контракт отражает рост инвестиций в энергетическую инфраструктуру и межрегиональные сети передачи энергии. Развитие подводных кабелей становится важным элементом энергоперехода, где морская логистика и специализированные сервисы играют критическую роль.
Дополнительно участие консорциума, включающего научные и инженерные структуры, подчеркивает усложнение требований к подобным проектам, где экологические аспекты становятся неотъемлемой частью реализации.
📌Next Geosolutions Europe S.p.A. — основана в 2014 году, частная компания, базируется в Италии, принадлежит частным инвесторам.
#offshore#subsea#energy#cables#shipping
🚢NKT выводит на воду кабелеукладчик нового поколения "NKT Eleonora" работающий на метаноле.
Верфь Vard Braila (Румыния) спустила на воду судно "NKT Eleonora", строящееся для датской компании NKT.
Судно станет одним из первых кабелеукладчиков с двухтопливной установкой, способной работать на метаноле.
Кабелеукладчик длиной 176 метров и шириной 32 метра - будет оснащен тремя каруселями для кабеля общей вместимостью до 23 000 тонн, а также современным оборудованием для подводной прокладки кабелей.
Энергетическая система от ABB и проектирование Salt Ship Design означают высокий технологический уровень судна.
С технической точки зрения использование метанола как топлива отражает стремление к снижению выбросов при сохранении гибкости эксплуатации. Судно рассчитано на выполнение сложных оффшорных операций, включая укладку высоковольтных кабелей для ветроэнергетики.
С отраслевой точки зрения проект является частью более широкой стратегии NKT, включающей расширение производства кабелей в Карлскруне. Это подтверждает рост спроса на инфраструктуру ВЭС и подводные энергосети, где спец. флот становится критически важным элементом.
Ввод судна в эксплуатацию в 2027 году усилит позиции компании в сегменте высокотехнологичных морских работ и поддержит развитие энергетического перехода в Европе.
📌NKT A/S — основана в 1891 году, публичная датская компания, специализируется на кабельных решениях, принадлежит институциональным инвесторам.
#offshore#cables#methanol#shipping#energy
🚢ACSM модернизирует офшорное судно "Genesis" после интеграции в Prysmian.
Испанская ACSM, недавно вошедшая в состав Prysmian Group, проводит масштабную модернизацию офшорного судна обеспечения "Genesis" (2003 г. постройки) на верфи в Виана-ду-Каштелу.
Судно оснащается краном с активной компенсацией качки (AHC), а также уже оборудовано аппаратом ROV для подводных работ.
Судно "Genesis" предназначено для укладки кабелей, инспекций, расчистки трасс и инженерных операций на морском дне.
С операционной точки зрения, модернизация усиливает возможности Prysmian в сегменте обслуживания подводных кабелей, обеспечивая более высокий уровень вертикальной интеграции и контроль над ключевыми этапами офшорных проектов.
📌Prysmian Group — основана в 1879 году (как часть Pirelli), один из крупнейших мировых производителей кабельной продукции, публичная компания с международными акционерами.
#Offshore#Shipping#Cables#ROV#Energy
🚢DeepOcean получила контракт на кабельные работы для ветропарка TPC-II в Тайване.
Норвежская DeepOcean заключила контракт на поддержку укладки кабелей для II-й фазы офшорного ветропарка TPC (TPC-II) у побережья Тайваня, усиливая присутствие в регионе Asia-Pacific.
Компания выполнит прокладку кабелей, соединяющих турбины с офшорными подстанциями, а также обеспечит инжиниринг и управление проектом. Работы будут выполнены совместно с Dong Fang Offshore с использованием модернизированного судна "Orient Adventurer".
Судно "Orient Adventurer" оснащено обновленными ROV-системами, каруселью под палубой и специализированным оборудованием для укладки кабелей, что позволяет выполнять работы в условиях оффшорного строительства ВЭС.
Проект отражает быстрый рост ветроэнергетики в Азии и усиление конкуренции за контракты в сегменте подводных работ. Расширение DeepOcean в регионе стало возможным после приобретения Shelf Subsea, обеспечившего доступ к локальным рынкам.
Проект TPC-II (295 МВт, 31 турбина) подтверждает устойчивый спрос на кабельные и монтажные работы, являющиеся ключевым элементом развития оффшорной ветроэнергетики.
Таким образом, DeepOcean продолжает глобальную экспансию, укрепляя позиции в одном из наиболее динамичных сегментов морской индустрии.
📌DeepOcean Group Holding BV — основана в 1999 году, частная офшорная компания, принадлежит инвестиционному фонду Triton Partners.
#offshore#wind#subsea#cables#energy