Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
#Chainlink is still consolidating above the crucial resistance and flipping that for support.
I think anything between $9-11 is an interesting one to buy into.
I mentioned it a few times, but it remains to be an opportunity of a lifetime.
I'd like #Chainlink to hold above $16 and then the next resistance zone is $21.
Higher low (on the weekly timeframe) established and $LINK is likely continuing to $25-30 in the coming months.
https://x.com/CryptoMichNL/status/1795736335610941605?t=SJbHK_ah54rvjCfW9znPmg&s=19
The community allotment of the #Chainlink Staking v0.1 pool has been filled!
22,500,000 Link has been staked so far for 4.75% staking rewards.
@Cryptomathh
Three wallets (one whale) spent 8.195M $USDC to buy 601,949 $LINK at $14.81 on average (the local bottom) between 5 and 4 hours ago.
Notably, these three wallets were newly created and received their funding stablecoins for the purchases from 2 other wallets that, on the other hand, had been dormant for over a year!
For more updates on #Chainlink ($LINK), follow @spotonchain and turn on your 🔔 at: https://platform.spotonchain.ai/en/platform/token?name=LINK
The #Chainlink non-circulating supply wallet unlocked 11.25M $LINK worth $14.19M.
Of which 9.23M $LINK ($116.37M) deposited into #Binance and sent 2.02M $LINK (25.14M) into a Multisig wallet, after 2 months.
https://etherscan.io/advanced-filter?fadd=&tadd=0x9B1c1752B6B6eAF62a8c491A8681B32C1F7ecDE9
https://x.com/OnchainLens/status/2002168360088580161
Follow @onchainlens for more onchain updates
Whale “0xbBF” withdrew 597,957 $LINK ($11M) from #Binance ~6 hours ago amid today’s 12% price surge.
Over the past 2 days, this whale has accumulated 1.343M $LINK at an average price of $17.46 (est. cost: $23.45M, now worth $25.47M).
Unrealized profit stands at $2M (+8.5%).
Follow @spotonchain for more #Chainlink updates.
https://x.com/spotonchain/status/1980248004251840849
21M $LINK ($295M) was unlocked from #Chainlink Noncirculating supply contracts ~3hrs ago, including:
• 18.25M $LINK ($264M) to #Binance
• 2.25M $LINK ($31.3M) to Multisig 0xD50f
Notably:
- Chainlink has unlocked 127M $LINK and sent 107.7M $LINK to Binance at ~$9.89 since Aug 2022.
- There are 391.5M $LINK ($5.4B) left across 24 contracts.
- $LINK price appears generally well-maintained post-unlocks!
Follow @spotonchain now and turn your 🔔 at https://platform.spotonchain.ai/en/platform/entity/439
19M $LINK ($341M) was unlocked from 2 Chainlink: Noncirculating supply contracts ~2hrs ago, of which:
• 15.95M $LINK ($287M) deposited to #Binance
• 3.05M $LINK ($54.3M) moved to Multisig 0xD50f
Since Aug 2022, #Chainlink has unlocked 106M $LINK, and then moved 88.95M $LINK to Binance at $9.06 on avg ($805M).
Currently, there are still 412.5M $LINK ($7.35B) left across these 24 contracts.
$LINK surged ~25% (7D). The price appears to slightly dip in the most recent 2 unlocks, despite previously being well-maintained.
Follow @spotonchain now and turn your 🔔 at https://platform.spotonchain.ai/en/platform/entity/439
⚡️Toncoin: Major Updates in October 2025 Ecosystem
#TON#Telegram#Chainlink
Toncoin reveals significant developments, including the launch of COCOON AI, tokenized U.S. stocks in Telegram Wallet, and Chainlink adopting TON as a cross-chain standard. The ecosystem also sees Lamborghini entering the digital collectibles space and significant growth in DeFi and NFT markets.
Source: link
@tonlines
#LINK/USDT analysis -
#ChainLink is anticipated to exhibit a bullish movement shortly. A swift scalp could be strategized towards the previous swing high.
TF : 5min
Entry : $14.15
Target : $14.30
SL : $14.06
🚀LINK и SUI стали самыми популярными альтами в соцсетях
▪️ Команда Santiment составила рейтинг самых обсуждаемых альткоинов в соцсетях. В список вошли криптовалюты с капитализацией более $500 млн, и первое место занял ChainLink (LINK).
▪️ Пока биткоин (BTC) пытается приблизиться к $100 000, пользователи сосредоточены на обсуждении альтов, которые показали значительный рост за неделю. Например, LINK подорожал на 27,5%.
▪️ Среди других популярных альтов в фазе роста выделяются SUI, TON, AVAX, DYDX, EOS, POPCAT, GNO и Bitcoin Gold. Их перспективы активно анализируются в соцсетях.
▪️ Аналитики отмечают, что повышенное внимание к криптовалютам часто сигнализирует о достижении локального пика, за которым может последовать снижение стоимости.
▪️ В то же время биткоин демонстрирует рост, поскольку его пока обходят вниманием в соцсетях. Если в ближайшие 24 часа пользователи не переключат внимание на BTC, он сохранит шансы на прорыв к $100 000.
#ChainLink#SUI#Криптовалюты