Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
🚢VARD спустила на воду гибридное судно типа OECV для Island Offshore.
Норвежская верфь VARD спустила на воду первое из двух гибридных судов для строительства офшорной энергетической инфраструктуры (OECV), строящихся для Island Offshore.
Корпус под строительным номером верфи NB 977 был спущен 9 февраля на верфи Vard Shipyards Romania (Брайла); достройка продолжится в Норвегии на верфи Vard Langsten.
Суда проекта VARD 3 25 длиной 120 м предназначены для подводных операций: IMR, укладки трубопроводов, строительства и монтажа инфраструктуры, водолазной поддержки и работ с ROV. Оснащение включает DP2, 250-тонный кран с компенсацией качки и размещение до 120 чел.
Первое судно: "Island Evolution", второе: "Island Explorer"; закладка киля состоялась в 2025 году.
Проект отражает спрос на гибридные и энергоэффективные решения в офшорной ветроэнергетике и нефтегазовом секторе, где растёт доля сложных подводных работ.
📌VARD основана в 1946 году и входит в итальянскую группу Fincantieri.
📌Island Offshore основана в 2004 году в Норвегии и является частной компанией, контролируемой семьёй Ульстейн (Ulstein).
#offshore#OECV#shipbuilding#hybridvessel#Norway
🚢HEA Energy вводит в строй гибридное офшорное судно “HEA Eco 1”.
Компания HEA Energy (ОАЭ) приняла в эксплуатацию новое офшорное строительное судно “HEA Eco 1”, построенное на китайской верфи Fujian Southeast Shipbuilding.
Судно длиной 69,8 метров имеет 520 м² открытой палубы с нагрузкой до 7,5 т/м² и предназначено для поддержки офшорных строительных операций — перевозки персонала, оборудования, топлива и воды к буровым платформам.
“HEA Eco 1” оснащено гибридной энергетической системой с четырьмя двигателями Cummins (по 1350 кВт), двумя азимутальными движителями и аккумуляторными батареями LiFePO₄, что обеспечивает скорость до 12 узлов и снижает выбросы.
Судно оборудовано системой DP2, противопожарным комплексом, современным навигационным оборудованием и краном грузоподъёмностью до 70 тонн.
На борту предусмотрены системы очистки воды, аварийного реагирования и жилые помещения для до 100 человек, что делает судно универсальной платформой для офшорных проектов.
Для рынка офшорного флота ввод гибридных судов типа OCV - отражает растущий спрос на более экологичные и технологически оснащённые суда для строительства и обслуживания энергетической инфраструктуры.
📌HEA Energy — энергетическая и офшорная сервисная компания из ОАЭ, специализирующаяся на поддержке нефтегазовых и морских инфраструктурных проектов. Компания является частной и принадлежит группе инвесторов из ОАЭ.
#Offshore#OSV#HEAEnergy#HybridVessel#OffshoreConstruction
🚢В Китае спущен на воду новый гибридный аварийно-спасательный буксир Австралии.
Китайская верфь Rizhao Gangda Shipbuilding Heavy Industry спустила на воду гибридный аварийно-спасательный буксир "Reef Responder", который будет эксплуатироваться Boluda Towage Australasia по контракту с Australian Maritime Safety Authority (AMSA).
Проект разработан канадской компанией Robert Allan Ltd. Длина судна 65 метров, тяговое усилие 120 тонн, что на 46% превышает показатели ранее эксплуатируемого "Coral Knight". Оснащение включает двигатели MAN, винторулевые колонки Brunvoll с регулируемым шагом, систему DP2, генераторы Cummins, пожарные насосы и кран Melcal.
Судно планируется ввести в эксплуатацию в районе пролива Торреса и Большого Барьерного рифа в рамках 10-летнего контракта на аварийное реагирование. Помимо буксировки, судно будет обеспечивать обслуживание навигационных средств.
📌Boluda Towage Australasia входит в испанскую группу Boluda Corporación Marítima, основанную в 1837 году. Компания контролируется семьёй Болуда (Boluda) - это полностью частная компания, контролируемая испанским предпринимателем Висенте Болуда Фосом (Vicente Boluda Fos) и его семейной группой. Компания не является государственной и не котируется на бирже.
#tugboats#ETV#hybridvessel#Australia#maritimesafety
🚢 Trident Aqua Services ввела в эксплуатацию крупнейший wellboat Шотландии — "Inter Alba".
Норвежская компания поддержки аквакультуры Trident Aqua Services начала коммерческую эксплуатацию нового батарейного гибридного судна для аквакультуры "Inter Alba" в Шотландии.
Судно длиной 93 метра - было построено на турецкой верфи Sefine Shipyard и передано в декабре 2025 года.
При вместимости живых танков около 6500 м³, "Inter Alba" является крупнейшим судном типа "wellboat" (для обработки рыбы) в регионе.
Проект разработан Salt Ship Design. Судно оснащено крупным батарейным пакетом в сочетании с системой рекуперации тепла, что снижает расход топлива и выбросы.
Ключевые технические решения:
✔️ Производство пресной воды до 15 000 м³/сутки (RO-система от Peter Taboada)
✔️ Системы обработки рыбы от MMC First Process
✔️ FLS-системы делузинга от Flatsetsund Engineering
✔️ Фильтрация до 52 800 м³/ч.
Судно будет обслуживать фермы Mowi в Шотландии.
📌Trident Aqua Services — частная норвежская компания, специализирующаяся на эксплуатации судов обслуживания рыбных ферм, включая тип "wellboat" и иных сервисных судов для аквакультуры. Компания контролируется норвежскими частными акционерами.
#aquaculture#wellboat#hybridvessel#Scotland#marinetech