Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Как сообщество должно решать задачу продления жизни:
Вот немного информации о Биоагентах, новой популярной теме в мире #Desci
Биотехнология сложна, но БиоАгенты упрощают ее понимание.
🔹 Разбивает научный жаргон на понятные идеи
🔹 Обобщает биотехнологические исследования для разных аудиторий.
🔹 Обеспечивает анализ новых открытий в режиме реального времени
Думайте об этом как о вашем персональном биотехнологическом переводчике, превращающем сложную науку в применимые на практике знания.
Задачи борьбы со старением — это задача организации непрерывного обсуждения между интеллектуальными агентами, что нужно делать для продлений жизни.
Почему несколько агентов?
Использование нескольких специализированных агентов является основной особенностью нашего исследования BioAgents, что позволяет использовать модульный и эффективный подход к решению задач биоинформатики. Каждый агент предназначен для определенных задач, таких как выбор инструмента, генерация рабочего процесса и устранение ошибок. Такое разделение труда гарантирует, что каждый аспект рабочего процесса биоинформатики обрабатывается агентом, специально оптимизированным для этой задачи.
#web3#desci#база
Что такое децентрализованная наука (DeSci)?
DeSci - общественно-научное движение, направленное на разработку инфраструктуры в WEB3 стеке для создания, анализа и хранения научных данных.
Идея в модернизации традиционной науки, используя возможности блокчейна, смарт-контрактов, криптовалют, невзаимозаменяемых токенов (NFT) и децентрализованных автономных организаций (DAO). DeSci поможет традиционной науке побороть существующие проблемы, повысить эффективность исследований и сопротивление цензуре.
Блокчейн создаст открытую и защищенную базу данных, смарт-контракты оптимизируют процесс исследований, проработанная токеномика DesCi проектов избавит ученых от институциональной или государственной финансовой зависимости.
Однако в противовес этому перед DeSci стоят серьезные вызовы вроде проблем централизации, справедливого финансирования и должного качества научных исследований.
Сможет ли DeSci разрастись до объемов DeFi-сектора — покажет время.
@MirraChannel😎
BlackRock, Solana, and Crypto Updates
Daily ETH flows by BlackRock hit +$123.9m. Arthur Hayes, Maelstrom's CIO, plans to invest in DeSci tokens like BIO, VITA, ATH, and others. Solana's new phone, Seeker, launching mid-2025 at $500, has 145,000 reservations. Canadian PM candidate Pierre Poilievre supports crypto and follows Bitcoin trends.
#ETH#Crypto#Solana#DeSci#Bitcoin#Fidelity#BlackRock#Investing#Tokens#Canada#Tech#Finance#Blockchain#Innovation#Investing#Trends#Products#Mobile#Future#VC
Bitcoin Dominates Market with Huge Gains
Tesla's bitcoin holdings surge to $1.076 billion, boosting GAAP revenue by $600M. 🎉 The Sei Foundation launches a $65M fund for decentralized science startups, while GMCI unveils an index for US crypto protocols. Notably, Texas announces plans for a Bitcoin Reserve.
Read more about Tesla's valuation increase here. Explore the Sei Fund details here and GMCI's index here.
#Bitcoin#Tesla#DeSci#VC#Crypto#Funding#Texas#Cryptocurrency#Investment#MarketTrends#GMCI#Sei#Startups#Blockchain#Protocol#Accounting#Finance#Legislation#Innovation#CryptoProtocol
🚀 NanoVita Secures Series A Funding with $20 Million Valuation
NanoVita, a decentralized science (DeSci) project, has announced the completion of its Series A funding round, achieving a post-investment valuation of $20 million. According to Foresight News, the specific amount raised in the funding round was not disclosed. The investment was backed by K24 Ventures, LandScape Capital, and WestLabs.
NanoVita aims to integrate nanotechnology, AI bio-intelligence, and real-world health data to build an open on-chain health research infrastructure. The project seeks to enable widespread participation and benefit from the next generation of personalized health research and data sovereignty revolution.
#NanoVita#SeriesAFunding#DeSci#DecentralizedScience#Nanotechnology#AI#BioIntelligence#HealthData#PersonalizedHealth#DataSovereignty#HealthResearch#BlockchainHealth
DeSci Gains Momentum Amid Innovation
Decentralized science (DeSci) is gaining traction with recent developments:
1️⃣Bio Protocol joins Binance Launchpool as the 69th project, focusing on decentralized science token launches. So far, 7 projects have raised $23M, with $7M allocated for research. More info here.
2️⃣Pump.science launches, allowing community-driven scientific experiments, starting with a longevity project. Their collaboration with Pulse will use health data metrics for future experiments. Learn more about Pump.science.
3️⃣ The Sci-Hub token has been introduced on pump.fun, providing access to scientific papers; the founder promotes purchasing the token to support open science. Token details here and Sci-Hub info here.
While still niche compared to AI and meme coins, DeSci is attracting interest, paving the way for wider community involvement. Let's observe how DeSci progresses into 2025!
#DeSci#BioProtocol#Binance#PumpScience#SciHub#Token#Research#Innovation#Web3#Community#HealthTech#Crypto#Launch#Investment#Experimentation#Longevity#OpenScience#Funding#Technology#Blockchain#Ethereum