Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
💵#VanEck has a model according to which by 2050 the BTK will become a reserve currency held by the world's central banks and used in international trade. In this scenario, the price of BTC rises to $3,000,000
📈Solana к концу 2025 года может достигнуть $520
🔹 Инвесткомпания VanEck прогнозирует рост курса Solana до $520 к концу 2025 года. В последние дни монета торгуется в диапазоне $200–220, а ее капитализация превысила $101 млрд.
🔹 Ожидается усиление спроса на смарт-контракты в сети SOL. 22% всех контрактов к концу года будут базироваться на этом блокчейне. Solana уже лидирует по объему торгов на децентрализованных биржах.
🔹 Рост денежной массы также сыграет свою роль. По оценке VanEck, показатель M2 в США увеличится до $22,3 трлн. Это поддержит приток капитала в криптоиндустрию.
🔹 VanEck в 2024 году подала заявку в SEC на запуск биржевого криптофонда ETF, который будет отслеживать результативность Solana на спотовом рынке. Другие игроки рынка также готовят аналогичные инструменты, которые будут интересны для институционалов.
#Solana#VanEck#Криптовалюты
🍀Друзья!
Встречайте 👁CryptoВзгляд!
В рамках этой рубрики известные представители блокчейн-индустрии и мира финансов щедро делятся с нами инсайтами и инсайдами — в кратком формате цитаты.
CryptoВзгляд — это:
✅ любопытные комментарии;
✅ актуальные прогнозы;
✅ нешаблонные оценки.
Оставайтесь с нами и читайте #CryptoВзгляд на Garantex News Russia!
#МэтьюСигел#VanEck
First Solana ETF Approved in USA
🚀 First Solana ETF ($SOL) appears at DTCC, paving the way for potential approval in the US.
🟢 Key step as DTCC handles all exchange settlements.
🟢 Applications previously submitted by VanEck, 21Shares, and Bitwise. Approval could boost institutional liquidity in Solana.
#Solana#ETF#Crypto#SEC#Finance#Investing#Markets#Liquidity#InstitutionalInvestors#VanEck#21Shares#Bitwise#DTCC#Trading
Steve Yun Speaks at Consensus HK
On February 20, Steve Yun from TON Foundation will present at Consensus HK, discussing 'Emerging Markets on the Road to Financial Freedom.' Join to explore DeFi's future and the impact of evolving regulations on Web3. Details here.
⚡️ OpenSea announces OS2 beta version and airdrop. Read more
🚓 In Thailand, Russians arrested for stealing Bitcoin worth $16.5 million. Read more
🧠 A look into the Metaverse and AR/VR projects you might have missed. Read more
🐋 VanEck says some US states will buy $23.5 billion in Bitcoin. Read more
👀 A new Bitcoin-ETF linked structured bond launches in Russia. Read more
🧐 JPMorgan identifies condition for Tether's compliance with US regulations. Read more
❌ Illegal Bitcoin farm shut down near Irkutsk. Read more
🤖 Sam Altman discusses features of GPT-4.5 and GPT-5. Read more
💫 BNB recovered losses following 2025 roadmap release. Read more
🔎 Ethereum Foundation allocates $120 million to DeFi protocols. Read more
👾 WLFI co-founder's X-account hacked to promote a scam. Read more
🔥 Former Greek finance minister criticizes Bitcoin maximalists. Read more
#Finance#DeFi#Web3#Bitcoin#OpenSea#Crypto#Ethereum#EthereumFoundation#Cryptocurrency#Blockchain#Thailand#Regulation#CryptoNews#SamAltman#AI#Innovation#Technology#Investment#Metaverse#ARVR#VanEck
Massive HEX Transfer to Burn Address
🚨 Over 50 billion #HEX tokens valued at $199 million transferred to a Burn Address from an unknown wallet, reports Whale Alert.
🟠 In other news, VanEck's Matthew Sigel forecasts that demand from 20 US Bitcoin Reserve bills could result in states purchasing over 242,787 Bitcoin, translating to a $114 billion opportunity!
More details on the transfer can be found here.
#HEX#Bitcoin#Crypto#WhaleAlert#VanEck#BTC#Blockchain#Finance#Investing#Ethereum#Markets#US#Reserve#Bill#Demand#Tokens#BurnAddress#Wallet#Value#Opportunity