Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
The Social Growth Layer for Web3 Mass Adoption.🌐
Thrilled to see @MessariCrypto break down UXLINK's infrastructure model.
🔑Key Takeaways:
1️⃣ UXLINK is the "Onboarding Layer" for partners like @SonicSVM & @DeAgentAI.
2️⃣ We bridge users to emerging AI ecosystems via trusted social graphs.
We are the distribution engine for the AI & Web3 economy. 🚀
📖Read the full report below👇https://messari.io/report/uxlink-partnership-growth-model-overview
#UXLINK#Messari#Web3Social#Infrastructure
🚀We’re excited to be a part of the R3alWorld DePIN Summit!
⚡️Join us at this groundbreaking event, hosted by @iotex_io and Co-Hosted by @MessariCrypto, where CyberCharge will showcase its innovations alongside other industry leaders.
🗓Sept 16th-17th
📍Amara Singapore
🔌Let’s power the future together!
#DePIN#CyberCharge#IoTeX#Messari#Token2049
Like👍, Retweet🔵, Comment
Link to the Tweet!
🔗Tweet From IoTeX: https://x.com/iotex_io/status/1829239846008934586?s=46
#CoinMarketCap#CoinGecko#Glassnode#DuneAnalytics#Messari#DeFi#Web3
5 самых популярных аналитических сервисов для новичков 🚀
Если вы только начинаете 🤓 погружаться в мир криптовалют, то аналитические сервисы — это ваши главные помощники. Они помогают следить за рынком, анализировать данные и принимать решения. Вот 5 самых популярных сервисов, которые точно пригодятся новичкам:
1️⃣. CoinMarketCap - сайт
Назначение: отслеживание цен на криптовалюты.
Основные функции: рейтинг (Топ-100 монет по капитализации), исторические данные и графики изменения цен, информация о криптопроектах.
➡️Как пользоваться: Просто зайдите на сайт, выберите интересующую монету и изучите её графики и информацию.
2️⃣. CoinGecko - сайт
Назначение: анализ рыночных данных и показателей.
Основные функции: метрики проекта (ликвидность, объемы торгов, информация по биржам), графики, сортировка монет по категориям (DeFi, NFT и т.д.).
➡️Как пользоваться: Выбирайте категорию или монету и изучайте её рыночные данные и статистику.
3️⃣. Glassnode - сайт
Назначение: Анализ on-chain данных.
Основные функции: метрики сети (активные адреса, объемы транзакций, хэшрейт), анализ поведения инвесторов.
➡️Как пользоваться: Подпишитесь на бесплатный аккаунт и получите доступ к базовым метрикам, или оформите подписку для расширенного анализа.
4️⃣. Dune Analytics - сайт
Назначение: Анализ данных DeFi-протоколов.
Основные функции: дашборды по DeFi проектам, создание собственных отчетов по нужным параметрам.
➡️Как пользоваться: Зарегистрируйтесь, выберите готовый дашборд или создайте свой.
5️⃣. Messari - сайт
Назначение: Аналитика и исследование криптопроектов.
Основные функции: исследовательские отчеты, подробные данные о каждом проекте, последние новости и инсайды.
➡️Как пользоваться: Изучайте отчеты и анализы, чтобы быть в курсе последних трендов.
Эти сервисы помогут вам лучше понять крипторынок и принимать более взвешенные решения. Начните с базового анализа и постепенно углубляйтесь в детали!
👍 Не забудьте лайкнуть этот пост, если он был полезен!
@MirraChannel😎
US States Embrace Bitcoin Investments
North Dakota moves to include Bitcoin in state assets through Resolution 3001. Other states like New Hampshire, Florida, and Texas are pursuing similar initiatives.
Kenya’s finance minister plans to legalize cryptocurrencies, reversing earlier bans, as underground usage remains prevalent.
Messari reduces workforce by 15% to focus on core products amid industry-wide layoffs, previously valued at $300 million in 2022.
#Bitcoin#Kenya#Crypto#NorthDakota#Messari#USA#Africa#Legislation#Finance#Investment#Blockchain#Layoffs#Cryptocurrency#Resolution3001#UndergroundEconomy#Treasure#Policy#Research#Tech#Startups#Innovation