Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
⚡️Команда BIMTeam ищет Координатора по технологиям информационного моделирования, направление Генплан
Мы — ПИК Digital (часть ГК ПАО "ПИК СЗ"), ИТ-компания, которая превращает строительство в высокотехнологичную отрасль. Наши решения охватывают все этапы: от проектирования и производства материалов до строительства, финансов и продаж.
⚪️ Обязанности
▪️Поддержка пользователей (инженеров-проектировщиков) по общим вопросам;
▪️Поддержка пользователей по дисциплинарным опросам (ГП/НС);
▪️Консультация пользователей по работе Civil 3D, AutoCAD и внутренних плагинов;
▪️Тестирование и анализ работоспособности Civil 3D, AutoCAD и внутренних плагинов;
▪️Выполнение поручений по проектам развития сервиса/группы;
▪️Разработка инструкций и учебных материалов;
▪️Разработка семейств / блоков;
▪️Диспетчеризация входящих обращений
⚪️Условия
▪️Удалённый формат работы
▪️Льготные программы от партнёров
▪️Корпоративная техника и частичное ДМС
▪️Крутое комьюнити экспертов в BIM и digital-строительстве
✅Хотите делать строительство технологичным? Присылайте резюме @IrinaApeshina!
#BIMTeam#ПИК#Генплан
⚡️BIM Форум 2025 - наши эксперты рассказали о системе проверки модели на соответствие BIM-требованиям BIM Inspector
Главные инсайты:
▪️Мы заметили, что 70% компаний тратят время на разработку собственных инструментов вместо использования готовых решений, что создает большой потенциал для экономии времени
▪️Мы увидели растущий запрос на экосистемные решения в BIM
▪️Лучше всего сработала демонстрация конкретной экономии времени:
когда мы показывали, как плагин экономит 2 часа на типовой операции
➡️ Какую рутину вы бы хотели автоматизировать в первую очередь?
➡️ Что для вас главное препятствие в автоматизации процессов?
Оставляйте ваши вопросы в комментариях под постом⤵️
Спасибо @bimforumpro за крутую организацию! И отдельно - участникам за внимание и крутые вопросы
#БИМФорум2025#ПИК#BIMTeam
⚡️Cnews про BIM inspector
Написали как мы сократили время поиска ответов в базе инструкций и пользовательской документации с 30 до 5 минут, а адаптацию новых пользователей — с 2–4 недель до 3–5 дней. Таких результатов удалось достичь по итогам запуска ИИ-помощника для пользователей BIM Inspector.
⚪️Читать новость
⚪️Читать подробную статью на Habr
#ПИК#BIMTeam#ИИ#BIMInspector
🔔Большеинструментов — больше возможностей!
Мы активно расширяем набор инструментов, чтобы работа в Revit была быстрее и удобнее.
И сейчас в нашем арсенале уже более 15 полезных инструментов, 12 из которых доступны абсолютно бесплатно🔥
С их помощью вы можете:
🔘копировать листы внутри проекта с различными настройками, переименовывать их, перенумеровывать
🔘пакетно печатать листы разных форматов в PDF из текущего и связанных файлов
🔘изменять опорный уровень у элементов без их смещения
🔘задавать нумерацию элементов в спецификациях
🔘экспортировать спецификации в Excel
🔘заполнять количество изменений в штампах листа и изменения в ведомостях рабочих комплектов
🔘экспортировать листы в DWG
🔘управлять видимостью связей на видах и шаблонах
🔘заменять тип осей с 2D на 3D и наоборот
🔘пакетно добавлять/удалять параметры в проекте, копировать их между семействами/проектами
🔘находить и очищать проект от ненужных dwg и dxf импортов
🔘гибко выбирать элементы по значениям параметров
🔘создавать рабочие наборы
🔘обрезать вид по прямоугольной области
✅ Также, вы можете заполнять параметры элементов на основе значений других параметров и расчетных формул
то есть гибко задавать в какие элементы, в какой параметр и что именно должно быть записано
Инструменты на практике
⏺ Установите PikToolsBox (кнопка "Скачать" на странице продукта) и далее загрузите сборку Общее-Revit
Пробный период для платных решений на 3 месяца
⏺Оставьте заявку
#Revit#BIM#ПИК#BIMTeam
Попробуй бесплатно плагины PikTools!
🥳PikTools - инструменты для автоматизации проектирования в Revit, AutoCAD&Civil3D
В составе бесплатного пакета для Revit:
🔸Опорный уровень - изменение опорного уровня элементов без их фактического смещения
🔸Диспетчер параметров - комплексная работа с параметрами, пакетное добавление в проект и в семейство
🔸Экспорт в Excel - пакетный экспорт спецификаций из Revit в XLSX и TSV
🔸Фильтр - гибкая фильтрация элементов по выбранным параметрам и их значениям
🔸Перенумеровать листы - изменение номера листов в проекте
🔸Оси 2D/3D - пакетная замена режима осей на виде с 2D на 3D и обратно
🔸Ревизии - автозаполнение количества изменений в штампах листа и изменений в ведомостях рабочих комплектов чертежей
🔸CAD менеджер - поиск и удаление импортированных DWG-файлов в проектах Revit
Подробнее на нашем сайте
Инструкции
Скачать бесплатно
#Revit#BIM#ПИК#BIMTeam
Полезная подборка курсов для проектировщиков и BIM-специалистов от команды BIMTeam 🟧
⚪️C#. Автоматизация проектирования в Autodesk Revit
➡️Ссылка на курс
➡️Промокод на 25% до 1 мая - BIMTEAM25
Курс будет полезен bim-специалистам, проектировщикам и начинающим разработчикам, желающим освоить навыки программирования на языке С# для автоматизации проектирования в ПО Autodesk Revit
⚪️Проектирование генплана в Civil 3D
➡️Ссылка на курс
Этот курс поможет вам познакомиться с принципами работы в Civil 3D, а также начать использовать основные инструменты и функции программы для решения типовых задач при проектировании генплана.
⚪️Технология моделирования в Revit. Базовый уровень
➡️Ссылка на курс
Бесплатный обучающий курс помогает изучить инструменты, возможности и способы решения типовых задач в Autodesk Revit Чтобы понять принципы и функции работы в ПО на базовом уровне, в курсе разбираются примеры разделов АР и КР как наиболее универсальные для специалистов всех разделов проектирования.
⚪️Family Manager. Обзор функционала
➡️Ссылка на курс
Family Manager - система для управления библиотеками компонентов. Позволяет быстро находить и размещать семейства, управлять стандартом и библиотекой семейств как единым целым, контролировать их использование в проекте. Бесплатный курс посвящен системной работе в Family Manager. Вы узнаете, как устроена и как взаимодействует каждая часть системы. Идеально для специалистов, желающих вывести управление компонентами на новый уровень.
Как устроен процесс проверки моделей
#ПИК#BIMTeam#Курс#BIM
Полина Павлова и Станислав Пуртов выступили на форуме «Движение» в Сочи, где рассказали о экосистеме, которую мы создаём для наших проектировщиков.
Мероприятие поражает масштабом, уровнем аудитории и атмосферой развития, которая здесь царит несколько дней форума. Если вы ни разу не были, то рекомендуем однажды это сделать.
По горячим следам делимся материалами выступления:
🔘Презентация
🧡Бесплатный пакет плагинов
🔘Tg-канал
🔘ВК-сообщество
#ПИК#BIMTeam#форумДвижение
🆕Где встречаются дисциплины: история одного продукта
В статье рассказываем, как мы вывели междисциплинарные инструменты в отдельный продукт, какие были предпосылки для этого и что изменилось после
🔗 Читать по ссылке
✅Скачать пакет общих плагинов
#статья#BIMTeam#ПИК#PikTools
🔔Напоминание о вебинаре!
Не пропустите наш вебинар «Плагины против рутины - обзор решений».
📌Дата
23 октября 2025 г.
⏰Время
11:00 (МСК)
📍Формат
Трансляция в Telegram-канале PikTools. Общее
🔊Спикер
Дарья Попова, ТИМ-аналитик
📝На вебинаре разберём
🤩Возможности плагинов PikTools Общее
🤩Как они помогают выполнять задачи в Revit проще и быстрее
🤩Их применение на практике
✉️Регистрация на вебинар доступна по ссылке
*Ссылка на трансляцию будет отправлена на почту после регистрации
👍 До встречи!
#BIMTeam#вебинар#PikTools#Общее