Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
🚜 В Москве стартовала конференция «Дело Спецтехники» от Avito
В столице собрались ключевые игроки рынка спецтехники на крупной отраслевой конференции от Avito. Вот ключевые и самые острые тезисы, которые уже звучат с главной сцены:
💡 О чем говорят эксперты?
▪️ Лизинг: правила меняются. Поддержка в виде льготных программ доступна в первую очередь для техники российского производства. Это серьезный сигнал для рынка и повод для переоценки бизнес-стратегий.
- Объем изъятой техники оценивается в рекордные 80 000 единиц. Важный нюанс: часть этого парка, вероятно, никогда уже не вернется в работу и навсегда останется на стоянках.
▪️ Дно пройдено? Пройдя через сложный период, рынок, по мнению участников, достиг низшей точки. Ключевой вывод: «Дно достигнуто, остается только оттолкнуться». Это вселяет осторожный оптимизм в отрасль.
Следите за новостями, самое интересное — впереди!
#Avito#ДелоСпецтехники#Спецтехника#Рынок#Лизинг#Бизнес#Аналитика#Конференция
🏢 Спросили у тех, кто оформлял офисы Avito, «Аэрофлота» и VK: что сейчас происходит с рабочими пространствами?
Ведущие дизайнерские бюро – Syntaxis, Designic, Horizon, T+T Architects, IQ и KIDZ - рассказали нам, как меняются офисы, в которых мы проводим треть жизни. Спойлер: опенспейс в классическом виде больше не работает.
Что отмечают эксперты:
🔹 Тишина – новый люкс. Информационный шум мегаполиса заставляет компании создавать «тихие комнаты» и этажи с режимом молчания. Нейрогигиена стала главным трендом и мощным HR-инструментом.
🔹Многофункциональность вместо «посадочных мест». Современный офис – это набор сценариев. Сотрудник сам выбирает, где ему работать: в переговорке для мозгового штурма, в акустической кабине для созвона или в фокус-комнате для уединения.
🔹Петербургский код. В топе самых заметных проектов – офисы Avito, VK в Доме Зингера, «Цифергауз» для «Газпром нефти» и пространства Яндекса. Причем каждая компания теперь движется в сторону индивидуализации, отходя от западных референсов.
📌Подробности – в нашем материале
#офисы#дизайн#Петербург#архитектура#Avito#VK
📸: Сергей Мельников, Дмитрий Цыренщиков, Максим Максимов
🗞Стиль жизни
⏺Avito, Wildberries и Ozonобсуждают передачу данных о доходах селлеров в налоговую 👨💻
Avito, Wildberries и Ozon подписали меморандум, в котором рассматривают возможность передавать ФНС данные о партнёрах, использующих АУСН — автоматическую упрощённую систему налогообложения. Правда, только «при наличии значительного числа заинтересованных» предпринимателей.
🔹Почему платформы пока не спешат?
- АУСН пока применяют всего около 43 тыс. ИП,
- Система доступна не во всех регионах (только там, где местные власти приняли законы),
- Нет чёткой правовой базы — нужны поправки в законы, чтобы определить статус платформ как налоговых агентов.
С 2025 года АУСН стал доступен и для селлеров по агентским договорам. Кроме того, пользователи АУСН пока не платят НДС. Это особенно актуально на фоне новых предложений Минфина по снижению порогов обязательной регистрации НДС.
🔹Что дальше?
Минфин уже подготовил проект постановления о порядке обмена данными между платформами и ФНС. Платформы смогут отправлять информацию либо через систему налогового мониторинга, либо через специальные электронные сервисы. Если число «автоупрощенцев» вырастет — интеграция с ФНС станет реальностью.
#налоги#АУСН#маркетплейсы#ФНС#бизнес#Ozon#Wildberries#Avito
✅За полгода КСЭ доставил свыше 80 тыс. заказов Авито🚀
🚚В январе 2022 года КСЭ стал транспортным партнером сервиса Авито Доставка, начав работу в новом для себя сегменте — С2С.
🏫За 6 месяцев количество городов РФ, подключенных к проекту, выросло до 19.
🏃♂️В рамках партнерства с Авито «Курьер Сервис Экспресс» осуществляет отправку «от двери до двери»: курьеры забирают посылки у продавцов и доставляют их покупателям.
📦К перевозке принимаются грузы, стоимость которых не превышает 15 тыс. рублей, а вес составляет не более 25 кг.
➡️Подробнее в новости на сайте: https://www.cse.ru/mow/news/avito
#КСЭ#CSE#КурьерСервисЭкспресс#CourierServiceExpress#Доставка#Логистика#Фулфилмент#Склад#Трекинг#Перевозчик#Уведомления#Курьеры#FTL#LTL#Хранение#Грузы#Бесконтактная#БесконтактнаяДоставка#Avito#Авито
Major Moves in Tech and AI
🔹Avito acquires two advertising services: AdRiver and Soloway; no deal amount disclosed but estimates range from 0.5-2.5 billion rubles. More on this from RBC.
🔹Perplexity raises $500M at a $9B valuation. The AI startup specializes in delivering prompt answers to users. Previous valuation was at $3B; read more on Bloomberg.
🔹 Formerly known as TuSimple, the self-driving truck company rebrands to CreateAI, focusing on AI for video games after abandoning its trucking ambitions. Article on CNBC.
🔹 Ex-investment director of RUSNANO, Nail Gubaev, under investigation for alleged embezzlement, signs contract with the Ministry of Defense, prompting a suspension of prosecution. Details in Kommersant (link).
🔹 Insights from Smart Ranking show Russia’s medtech market grew 40% in Q3, with companies like Steplife (+258.5%) and Motorika (+190.95%) leading the growth in prosthetics. More info here: Kommersant.
🔹Broadcom reports a 220% revenue rise, solidifying its status as a $1 trillion company amidst soaring chip demand for AI. Read more on Business Insider.
#Avito#Advertising#Funding#AI#Perplexity#TuSimple#CreateAI#MedTech#Prosthetics#Broadcom#RevenueGrowth#NVIDIA#Embezzlement#TechNews#Startups#China#MarketTrends#Innovation#Investments#MarketValuation#TechAcquisition