Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
📈Gold Price Soars: Iran-US War Reprices Bullion as Ultimate Macro Hedge
With the Iran-US conflict escalating and critical infrastructure under threat, gold has solidified its position as the premier macro hedge, moving beyond a simple safe-haven asset to reflect war,...
🔗Read Full Analysis
🎯 SPECIAL OFFER: 15% OFF
💸 Coupon Code: salenow15%
🚀 Upgrade to premium signals → https://markets.fxpremiere.com/en/signals?utm_source=telegram
#Gold#Commodities#Geopolitics
🎉Slex is Your Bridge to Trade Commodities! 🚀
This year, the spotlight is on the thrilling world of asset tokenization - a trend redefining the financial landscape!
And guess what? Slex is at the vanguard, leading the journey into this exciting new frontier! 🌐🏁
🥁🥳Slex proudly offers you the ability to trade cryptocurrencies and commodities too! 🎆💰 Oil, diamonds, precious metals, and much more - all tokenized and ready for you to trade right at your fingertips! 🛢️💍
Ready to ride the wave of tokenization and take your trading experience to the next level? Join the Slex and buy, sell and trade physical assets! 🏄♂️🌊
#SlexExchange#commodities#CryptoTrading
Email | Telegram | Reddit | Facebook | Instagram | Medium | Linkedin | Twitter
🪙SILVER D1 OUTLOOK – Technical & Fundamental Confluence
🔍 Silver has broken decisively above the $40.00 psychological threshold, now holding near $41.12 with bullish momentum accelerating.
📈Technical Analysis
📎 Strong accumulation zones at $36.00–$37.00 provided the foundation for this rally.
📎 A clean breakout and retest of the $39.00 resistance (now support) confirms sustained buyer strength.
📎 Current bullish structure suggests potential continuation toward the $45.00 target zone, aligning with the next major resistance level.
📚Fundamental Drivers
📎 Rising expectations of a Fed rate cut this September are fueling demand for precious metals.
📎Dollar weakness and soft labor market data continue to support safe-haven flows into silver.
📎 Industrial demand, particularly from the green energy and EV sector, is adding an extra layer of long-term bullish support.
✨Key Takeaway: As long as price sustains above $39.00, the bullish trajectory toward $45.00 remains firmly intact.
———
🚀 Stay ahead of the markets with ShadowTraderFX.
📲Join our free Telegram for daily analysis, setups & trade alerts!
#Silver#Commodities#Gold#Forex
🚢Балкерный флот: энергетический кризис меняет структуру сырьевых потоков.
Рост цен на СПГ и перебои поставок через Ормузский пролив стимулируют переход Азии на угольную генерацию, что поддерживает спрос на сухогрузный флот.
Цены на уголь и алюминий растут, а логистические цепочки испытывают давление.
Одновременно усиливаются структурные сдвиги: Гвинея рассматривает ограничения экспорта бокситов, Бразилия сталкивается с задержками поставок сои в Китай, а Китай сокращает импорт американской сельхозпродукции в пользу Латинской Америки.
В сегменте металлов и сырья рост затрат (включая судовое топливо) оказывает давление на добывающие компании, что может повлиять на объёмы перевозок. При этом проекты в меди и аграрный экспорт из Аргентины поддерживают общий грузопоток.
С операционной точки зрения, рынок балкеров становится более чувствительным к геополитике и издержкам, где ключевыми факторами выступают энергетика, маршруты и доступность сырья.
📌Banchero Costa & C. S.p.A. — основана в 1968 году в Италии, международная морская брокерская и аналитическая компания, находится в частной собственности семьи Банчеро (Banchero).
#DryBulk#Commodities#Shipping#Freight#Energy
📈Iran Regime-Symbol Crackup: Market Repricing Crude Oil and Gold
Viral clips of regime symbols being toppled in Iran signal a potential shift from military conflict to a legitimacy crisis, prompting markets to reprice risk across oil, gold, and other key assets.
🔗Read Full Analysis
🎯 SPECIAL OFFER: 15% OFF
💸 Coupon Code: salenow15%
🚀 Upgrade to premium signals → https://markets.fxpremiere.com/en/signals?utm_source=telegram
#Geopolitics#MarketAnalysis#Commodities
📈Iran-US War News Today: Market Reprices Global Risk After Escalation
The market has shifted from anticipating failed diplomacy to pricing active military escalation following U.S.-Iran strikes. This article analyzes the immediate and evolving impacts across...
🔗Read Full Analysis
🎯 SPECIAL OFFER: 15% OFF
💸 Coupon Code: salenow15%
🚀 Upgrade to premium signals → https://markets.fxpremiere.com/en/signals?utm_source=telegram
#Geopolitics#MarketAnalysis#Commodities
🚢Baltic Dry Index растёт третий день, но остаётся в недельном минусе.
Индекс Baltic Dry Index (BDI) вырос на 0.8% до 2,031 пунктов, продолжив восстановление третий день подряд.
Рост обеспечен сегментом Сapesize (+2% до 3,032 пунктов), тогда как Рanamax продолжает снижаться (–0.8%), а Supramax остаётся практически стабильным.
С операционной точки зрения, рынок демонстрирует разнонаправленную динамику: крупнотоннажный сегмент восстанавливается, тогда как средний тоннаж остаётся под давлением.
При этом по итогам недели индекс всё ещё снизился на 1.2%, что указывает на сохраняющуюся волатильность.
📌Baltic Exchange — основана в 1744 году в Лондоне, ведущий поставщик фрахтовых индексов; принадлежит Singapore Exchange (SGX).
#DryBulk#BDI#Shipping#Freight#Commodities
🚢Baltic Dry Index снижается до минимальных уровней за две недели.
Индекс Baltic Dry Index (BDI) продолжил снижение, упав на 2.4% до 1989 пунктов — минимального уровня за последние две недели.
Основное давление исходит от крупных балкеров типоразмера Сapesize, где индекс снизился на 3.2% до 2844 пунктов.
Индекс балкеров типоразмера Panamax также показал падение (-2.6%).
Индекс балкеров типоразмера Supramax снизился умеренно (-0.3%).
С операционной точки зрения, рынок входит в фазу коррекции после роста, отражая ослабление спроса на перевозки сырья и влияние внешних факторов, включая стоимость топлива и геополитику.
Для отрасли это сигнал краткосрочного охлаждения балкерного сегмента при сохранении общей волатильности.
📌Baltic Exchange — основана в 1744 году в Лондоне, ведущий поставщик фрахтовых индексов; принадлежит Singapore Exchange (SGX).
#DryBulk#BDI#Shipping#Freight#Commodities
🚢Baltic Dry Index корректируется после роста.
Индекс сухогрузного рынка Baltic Dry Index (BDI) снизился на 0.3% до 2,057 пунктов после предыдущего роста. Динамика отражает краткосрочную коррекцию на фоне волатильности в балкерном сегменте.
Сегмент крупнотоннажных балкеров типоразмера Сapesize показал снижение на 0.7% до 2,965 пунктов, а типоразмер Supramax — на 0.9%.
В то же время типоразмер Рanamax продемонстрировал рост почти на 1% до 1,909 пунктов, поддержанный спросом на перевозки угля и зерна.
С операционной точки зрения, рынок остаётся неоднородным: давление в крупнотоннажном сегменте сочетается с устойчивостью балкеров типоразмера Рanamax, что указывает на перераспределение грузопотоков.
В целом, текущая динамика подтверждает фазу краткосрочной коррекции после роста, при сохранении фундаментальной поддержки со стороны сырьевых перевозок.
📌Baltic Exchange — основана в 1744 году в Лондоне, ведущая организация, рассчитывающая индексы фрахтовых ставок; принадлежит Singapore Exchange (SGX).
#DryBulk#BDI#Shipping#Freight#Commodities
🚢Дефицит упаковки нарушает экспорт риса из Азии.
Перебои поставок полипропиленовой упаковки из-за кризиса в Ормузском проливе нарушили экспорт риса из Азии, особенно в Индии, которая зависит от Ближнего Востока более чем на 50% по этому сырью.
Цены на сырьё для мешков резко выросли (до $1,380 за тонну), а стоимость упаковки увеличилась до $6.5–7 за тонну против $4–4.5 ранее. При этом часть контрактов остаётся невыполненной из-за невозможности доставки.
С операционной точки зрения, ключевым фактором становится не цена риса, а доступность упаковки, что замедляет отгрузки и снижает конкурентоспособность индийского экспорта.
Для рынка это пример косвенного влияния энергетического кризиса на аграрные перевозки, усиливающего сбои в сухогрузной логистике.
📌S&P Global Platts — основана в 1909 году, международное ценовое агентство и поставщик аналитики в сырьевых рынках, входит в S&P Global, публичную компанию.
#DryBulk#Agriculture#Shipping#Logistics#Commodities
🚢Балкерный флот и сырьевые рынки под давлением: перебои поставок и рост цен.
Закрытие Ормузского пролива привело к остановке до 9% мировых поставок первичного алюминия.
Производители в Бахрейне и Катаре объявили форс-мажор, а премии в Европе выросли до максимума с 2022 г, что усиливает давление на цепочки поставок и стоимость морских перевозок.
На рынке железной руды Китай расширяет ограничения на импорт от BHP, создавая риски перераспределения потоков и потенциального снижения спроса на балкеры типоразмера Сapesize на маршрутах Австралия–Китай.
Параллельно рост добычи меди в Замбии и инвестиции в проекты Rio Tinto формируют долгосрочный потенциал увеличения грузопотока.
Сельскохозяйственный сегмент демонстрирует сбои: Cargill приостановила экспорт сои из Бразилии в Китай из-за санитарных требований, что нарушает ключевой трейдлайн и негативно влияет на балкеры типоразмера Panamax и Supramax.
Одновременно прогнозы по экспорту зерна из ЕС снижаются, а рынок сахара сжимается из-за падения профицита.
С операционной точки зрения, рынок балкерного флота сталкивается с разнонаправленными факторами: краткосрочные перебои и геополитика усиливают волатильность, тогда как долгосрочные драйверы спроса по-прежнему сохраняются.
📌Banchero Costa & C. S.p.A. — основана в 1968 году в Италии, международная морская брокерская и аналитическая компания, находится в частной собственности семьи Banchero.
#DryBulk#Commodities#Shipping#Capesize#Trade
📈Oil Market Reversal: 'War Trade' Breaks Amid Policy Shifts and Crowded Positioning
A dramatic reversal in crude oil prices, breaking the 'war trade,' signifies a major shift in market narratives. This move, driven by policy shifts and crowded positioning, has profound...
🔗Read Full Analysis
🎯 SPECIAL OFFER: 15% OFF
💸 Coupon Code: salenow15%
🚀 Upgrade to premium signals → https://markets.fxpremiere.com/en/signals?utm_source=telegram
📰 Stay ahead — get breaking financial news & analysis at https://markets.fxpremiere.com/en?utm_source=telegram
#Commodities#CrudeOil#Geopolitics