Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Что такое cash flow?
Выражение «стабильный cash flow с перспективами капитального роста» означает, что объект (в данном случае апарт-отель **FREEDOM**) сочетает два ключевых преимущества для инвесторов:
1. Стабильный cash flow (денежный поток).
- Регулярный доход от аренды (гарантированные и ежемесячные выплаты инвесторам).
- Минимизация рисков благодаря гарантированным платежам на основе договора на 10 лет с дальнейшей пролонгацией.
- Предсказуемость финансовых поступлений (за счет графика выплат).
2. Перспективы капитального роста.
- Увеличение рыночной стоимости объекта со временем (например, за счет роста цен на недвижимость в районе, развития инфраструктуры или улучшения репутации проекта).
- Возможность продажи объекта в будущем по более высокой цене, чем первоначальные вложения.
Почему это важно для инвесторов?
- Cash flow обеспечивает быстрый возврат инвестиций и пассивный доход.
- Капитальный рост даёт долгосрочную прибыль при перепродаже.
Для апарт-отеля FREEDOM это означает, что инвестор получает:
✔ ежемесячные выплаты от аренды (например, 8–12% годовых);
✔ рост стоимости недвижимости (например, на 5–15% в год за счет развития района и спроса).
Это классическая модель «купил – получай доход – продавай дороже», популярная в коммерческой недвижимости.
Если переписать другими словами формулировку, то будет звучать так:
«гарантированный доход от аренды + рост стоимости ваших вложений».
Друзья, если у вас есть какие-то вопросы, пишите их в комментариях, мы с радостью ответим, разберем все на простом и понятном языке!
#FreedomEkb
#cashflow
"У нас нет денег на ваш аппарат". Что отвечать, если у клиники пустой cash flow
Коллеги, сегодня хочу дать полета фантазии. Когда клиент говорит, что денег нет, лично я считаю, что это лучший момент для продажи. Когда клиника говорит "нет денег", она не отказывается от решения, а кричит о своей главной боли: "Не могу позволить себе простой и неэффективность". Ваша задача - не спорить, а перевести разговор с цены чека на стоимость владения (TCO) и показать путь. Фраза о деньгах - это начало диалога о деньгах, а не его конец.
📊Скрипт из 3 шагов: от возражения до предложения
ШАГ 1: Признать и перевести в аудит боли
Не спорьте. Скажите: "Понимаю, бюджет на закупки ограничен. Давайте проверим, будет ли аппарат нагрузкой или источником cash flow. Для этого нужны три цифры: текущая загрузка вашего парка в часах, средний чек исследования и сколько пациентов вы теряете в месяц из-за нехватки мощностей?".
Финансовая логика: Вы начинаете совместный расчет стоимости проблемы, которую решаете.
ШАГ 2: Показать TCO и альтернативу деньгам
На основе цифр клиента считайте не цену аппарата, а цену его отсутствия. "Если ваши потери из-за нехватки мощностей - X рублей в месяц, то реальная ежемесячная стоимость нового аппарата для бизнеса: (цена/60) - X. Часто эта цифра отрицательна - аппарат зарабатывает с первого дня. А если нет - используем инструменты, чтобы не трогать оборот: операционный лизинг с оплатой из выручки или подписка, где в абонентскую плату входит и сервис".
Финансовая логика: Вы показываете, что аппарат - это инструмент монетизации существующего, но неудовлетворенного спроса, и сразу даете финансовые "мостики".
ШАГ 3: Предложить тест-драйв на условиях клиента
"Чтобы снять риски, давайте пилот. Размещаем аппарат на 3 месяца по модели подписки или лизингас оплатой за исследование. Вы платите только за факт. Через 90 дней у вас будут свои данные по cash flow. Не сработало - забираем. Сработало - переводим на постоянную модель.
Финансовая логика: Вы продаете не железо, а гарантированный результат и снятие риска. Это меняет всю экономику сделки.
Вопрос к вам: Какое нефинансовое условие (бесплатное обучение врачей, помощь в продвижении услуги, включение в рекламную кампанию) чаще всего становится решающим аргументом для вашего клиента при напряженном бюджете? Поделитесь в комментариях.
#B2Bпродажи#переговоры#лизинг#TCO#управлениеклиникой#cashflow
Payment Delays Cost Businesses Billions
Startup ideas can emerge from ordinary problems. A staggering 50% of invoices go unpaid past the due date, leading to cash flow issues for suppliers. In the US alone, this amounts to $825 billion in challenges. Tech platforms successfully address these issues, with one experiencing a 6x revenue increase last year.
For more info, check the full article here.
Additionally, the Bitcoin dominance index recently hit a four-year high, surpassing 64%.
#PaymentIssues#Startups#Finance#CashFlow#Invoices#TechSolutions#Bitcoin#Crypto#VC