Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
💡 OpenAI Valuation Soars Above $100 Billion
OpenAI is reportedly in talks to raise new investments, pushing its valuation to over $100 billion. Thrive Capital is set to contribute $1 billion to this funding round, aimed at enhancing computing power and covering operational costs. OpenAI staff may get the chance to sell shares later this year. Despite the impressive valuation, the company faces potential losses of $5 billion in 2024, emphasizing the need for this capital infusion.
#AIInvestment#OpenAI#TechFunding
Ryvn Secures $500K Funding
Ryvn raises $500K to empower startups with on-prem SaaS deployment and management, streamlining operations from a single app.
#Funding#SaaS#Startups#OperationalManagement#TechFunding
Bureau Secures $30M Funding
Bureau, a trust network focused on identity verification, compliance, and fraud prevention for modern businesses, has raised $30 million. The funding round closed on December 18, 2024. 🏦
#Funding#IdentityVerification#Compliance#FraudPrevention#TechFunding#BusinessSolutions#Investment#Startups
Motion.io Secures $3.17M Funding
Motion.io raises $3.17M on December 18, 2024, to enhance their white-label client portals. The funding will support automating client onboarding and improving file, signature, and feedback collection processes.
#MotionIo#Funding#ClientPortals#Automation#Onboarding#TechFunding#Feedback#Signatures#WhiteLabel#Startup#Investment
Alvie Raises $2.19M for HUGO
Alvie has secured $2.19 million to advance HUGO, the first digital assistant aimed at optimizing the spraying of phytosanitary products and bio-controls, as announced on December 19, 2024.
#Alvie#HUGO#Funding#AgTech#DigitalAssistant#Phytosanitary#BioControls#Innovation#TechFunding#SustainableAgriculture
CreatorBid Raises $2.5M; Google Invests in AI
AI-driven platform CreatorBid raised $2.50M in a public sale, achieving a $25M FDV via Binance Wallet. Meanwhile, Google invests $1B in AI startup Anthropic as the company targets a $2B funding round. Notably, Nebius closely trails Yandex in market cap with worth of $9.3B. Significant movements highlight ongoing innovation in the AI and crypto sectors.
Full news: CreatorBid | Google Invest | Divvy Homes Sale | Nebius Market Cap
#AI#Crypto#VC#Fundraising#Google#Anthropic#CreatorBid#Investment#TechNews#Startups#MarketCap#DivvyHomes#Innovations#Binance#Stablecoins#TechFunding#Nebius
Mantis Robotics Secures $5M Funding
Mantis Robotics has raised $5M on December 16, 2024, to develop the Mantis Robot, touted as the fastest and safest industrial robot with physical intelligence.
#MantisRobotics#Funding#Industrialrobot#Investment#Technology#Innovation#Manufacturing#Robotics#Automation#AI#Safety#Fastest#PhysicalIntelligence#Engineering#RoboticSystems#TechFunding#Startup#RoboTech
CLO Virtual Fashion Raises $34.81M
CLO Virtual Fashion successfully raised $34.81 million in funding, with a funding round occurring on December 16, 2024. For more information, visit their website: CLO Virtual Fashion.
#Funding#CLOVirtualFashion#Investment#Fashion#Tech#3DModeling#VirtualReality#FashionTech#Innovation#Startup#TechFunding#Capital#December2024#Growth#Industry#Development#Design#FashionIndustry#DigitalFashion
Zhipu AI Raises $411.82M
Zhipu AI has raised $411.82 million as of December 17, 2024. The company co-developed the GLM-130B model, resulting in a dynamic knowledge engine termed the 'knowledge double wheel'. They also launched the cognitive model platform Bigmodel.ai, featuring products like CodeGeeX and CogView, which provide intelligent API services connecting users across various sectors.
#ZhipuAI#Funding#AI#Bigmodel#GLM130B#CodeGeeX#CogView#API#Tech#KnowledgeMap#CognitiveModels#Intelligence#DigitalHumans#MachineLearning#DataScience#Innovation#Research#TechFunding#Startups#Development
PulseAd Raises $2M Funding
PulseAd, an AI-powered global retail media platform, has secured $2 million in funding as of December 19, 2024. The platform is designed to enhance Amazon seller success.
#PulseAd#Funding#AI#RetailMedia#Amazon#GlobalMarket#ECommerce#TechStartup#MediaPlatform#SellerSuccess#Investment#DigitalMarketing#TechFunding#SaaS#OnlineRetail#Advertising#InnovativeTech#GrowthFunding#BusinessExpansion
MRI Simulator Secures $3.5M
Corsmed has successfully raised $3.50M to enhance its MRI simulator, which provides an affordable, realistic training solution for students and technicians. This technology allows hands-on experience for just 1% of the cost of traditional MRI scanners, expanding training opportunities significantly.
#Corsmed#MRI#Simulator#Healthcare#Training#EdTech#Innovation#Financing#MedicalTraining#TechFunding#Startup#Students#Technicians#AffordableHealthcare#HandsOnTraining#SkillsDevelopment#Technology#Upskilling#AffordableTech#MedicalEducation