Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
#Battery#karina_lab
模块:org.klab.batteryinfo
简介:Battery Info Enabler
版本:311-3.1.1
更新时间:2026/04/11 11:50:19
更新日志:
⚠️Don't update unless you're using LSposed Manager with 101 API support
What's new:
Fix Settings Services crash if maximum capacity is more than 100%
@lsposed_Modules_Updates_Trackers | @lsposed_Geeks_Bot
#Battery#karina_lab
模块:org.klab.batteryinfo
简介:Battery Info Enabler
版本:310-3.1.0
更新时间:2026/04/04 16:55:46
更新日志:
⚠️Don't update unless you're using LSposed Manager with 101 API support
What's new:
Reduced app size
Added Design capacity, Maximum capacity, Temperature to Battery Information entry.
@lsposed_Modules_Updates_Trackers | @lsposed_Geeks_Bot
#Battery#karina_lab
模块:org.klab.batteryinfo
简介:Battery Info Enabler
版本:300-3.0.0
更新时间:2026/03/29 17:30:34
更新日志:
⚠️ ATTENTION: Migrated to libxposed 101
Don't update unless you're using LSposed Manager with 101 API support
@lsposed_Modules_Updates_Trackers | @lsposed_Geeks_Bot
#Battery#karina_lab
模块:org.klab.batteryinfo
简介:Battery Info Enabler
版本:200-2.0.0
更新时间:2026/03/27 01:14:54
更新日志:
An LSPosed module that unlocks and enhances the native battery information for Pixel 6+ devices.
v.2.0.0:
Added Settings Services hook. You can now view Battery Health
@lsposed_Modules_Updates_Trackers | @lsposed_Geeks_Bot
#Battery#karina_lab
模块:org.klab.batteryinfo
简介:Battery Info Enabler
版本:100-1.0.0
更新时间:2026/03/22 04:07:33
更新日志:
An LSPosed module that unlocks and enhances the native battery information for Pixel 6+ devices.
@lsposed_Modules_Updates_Trackers | @lsposed_Geeks_Bot
🌏Открывает публикации 2026 г. статья, представляющая данные по получению и исследованию композитного материала на основе оксида графена и NiO,ZnO и Al2O3. Рассмотрены структурные, морфологические и электрохимические свойства тонкой пленки композита CaAl2O4–ZnO/rGO. Проведена оценка свойств пленки после введения Niи Ag. Результаты показывают, что легированный никелем композит может выступать в качестве электродного материала для суперконденсаторов.
🖌Cissan Adanma Sylvanus https://orcid.org/0000-0001-9823-6502
🖌Obi Kingsley Echendu
🖌Bede Chinyere Anusionwu
🖌Dominic Eya
📘Integrating battery-like materials into supercapacitors
✅Year 2026, Volume 5, Number 1 https://doi.org/10.15826/elmattech.2026.5.064
📃Abia State University Uturu, Nigeria https://abiastateuniversity.edu.ng/
📃Federal University of Technology Owerri, Nigeria https://futo.edu.ng/
🟣Полный текст https://elmattech.ru/article/view/9138/6445
#Supercapacitors#Battery-likeMaterials
🚢Meyer Werft представляет концепт полностью электрического круизного лайнера Project "Vision".
Немецкая верфь Meyer Werft представила концепцию круизного судна Project "Vision" — потенциально первого в мире полностью аккумуляторного лайнера водоизмещением более 80 000 GT.
Проект рассчитан на 1 856 пассажиров при длине до 275 м.
Концепт предполагает использование батарейных систем от Corvus Energy, что позволит сократить выбросы парниковых газов до 95%.
При наличии заказа уже в ближайшее время ввод судна в эксплуатацию возможен к 2031 году, при условии развития береговой инфраструктуры для зарядки.
С технической точки зрения ключевым вызовом остается обеспечение энергопотребления «hotel load» — одного из наиболее энергоемких компонентов круизных судов.
Однако развитие аккумуляторных технологий и расширение инфраструктуры берегового питания в портах в Европе (ожидается около 100 портов к 2030 г) - делает подобные проекты более реалистичными.
С отраслевой точки зрения концепция отражает новый этап декарбонизации круизной индустрии. После перехода на СПГ следующим шагом становится электрификация, особенно на коротких и региональных маршрутах, где возможна регулярная подзарядка.
Таким образом, Project "Vision" демонстрирует сдвиг в сторону zero-emission круизов, что становится важным конкурентным фактором для операторов.
📌Meyer Werft - основана в 1795 г, частная судостроительная компания, принадлежит семье Мейер (Германия).
#cruise#battery#decarbonization#shipbuilding#shipping
🔋 Battery Guru: Get the inside scoop on your battery at a glance, Simple and Informative.
- Monitor battery health and capacity (mAh).
- Real-time stats: charging speed & temperature.
- Set custom alarms for full charge, high temps, and more.
- Analyze app-specific power usage and discharge rates.
- Test chargers and cables for the safest and fastest combos.
- View historical data with weekly graphs.
Link: https://play.google.com/store/apps/details?id=com.paget96.batteryguru&hl=en
#Android#Battery#Productivity
🛎@Awesome_Tools
💬@Awesome_Tools_Chat
💎 Battery Guru 电池大师v2.4.1绿化版 13
♻️资源介绍:Battery Guru 显示电池使用情况信息,测量电池容量(mAh),显示估算值,并通过有用的技巧来帮助您更改充电习惯,以延长电池寿命并延长其寿命200%。
⬇️本地下载
🔔标签:#安卓软件#Battery#Guru#电池大师