Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
🔗Bilder🔗
🔲Накрывшаяся вчера MyGuava затронула и Bilder, но только в качестве пополнения стягиванием с карты, так как Guava там была под капотом - в общем ничего страшного для Билдера, отрубили стяг, пока не найдут нового провайдера, он там к слову был бессмысленно дорогой, так что особо переживать не о чем
#Bilder
🔖Если вам нужна консультация
🔖Все наши посты тут
🔖Если хотите вступить в наш чат
🔖Тут все полезные рефки
🔖Если вы хотите написать пост на канале
✨Bilder✨(Bilderlings)
▫️Открытие счета в Bilderlings задача одновременно и несложная, но и может быть и очень долгой. Они стараются взять максимум документов, что вы можете предоставить, из-за этого сроки открытия растягиваются, но зато при этом открывают счёт почти всем
▫️Весьма странное приложение, но неплохая декстопная версия. Дают они GB ибан, и два счета по дефолту в евро и юанях. Теоретически есть возможность открыть счёт в фунтах и в долларах, но по запросу в поддержке мне отказали в открытии, так как мой профиль не соответствует запросу
▫️Виртуальная карта открывается автоматически и ее можно привязать к Apple и Google pay. Карта моновалютная, можно создать карты в евро, фунтах и долларах.
▫️Что приятно и неожиданно для ЕС финтеха, поддержка тут на русском, по почте, отвечают они грамотно и по делу.
▫️Есть вклады в евро до 4%, с заморозкой на 3 - 6 месяцев и т.д
▫️Кешбек 0,1% но если превысил 1000 евро трат то уже 1%
▫️Есть бизнес счет
▫️Официально сообщают о своей лояльности к крипте, т.е можно не боятся переводить сюда деньги с бирж и крипто финтехов
◽️Ну а теперь к минусам, которые тоже прям существенные - здесь конские комиссии буквально на все подробнее можно глянуть тут, а также непонятные платы, за странные услуги, на которые можно впороться
После того как отрубили доступ россиянам и белорусам, финтех стал не очень интересен. Но по-прежнему кристофрендли
#Bilderlings#Bilder
Консультация | Вступить в чат | Наши посты | Все рефки
Обновлено 27.01.2025
Auf Anordnung des Zaren Peter I wurde am 8. Februar 1724 in St. Petersburg die Akademie der Wissenschaften gegründet. Traditionell feiern russische Wissenschaftler an diesem Datum den Tag der russischen Wissenschaft.🧑🏻🔬
🧬 Auch heute setzen Wissenschaftler Russlands diese bedeutenden Traditionen fort: Sie entwickeln die vielversprechendsten Bereiche der Wissenschaft, arbeiten an modernsten Technologien und bilden die nächste Generation von Studenten aus.
Wissenschaft ist jedoch nicht nur Forschung und Zahlen, sie ist auch Inspiration, Schönheit und Staunen. Genau das zeigt die Ausstellung im Russischen Haus in Berlin:
Ausstellung „Mach dir ein Bild von Wissenschaft!“🖼️
In dieser Ausstellung werden Aufnahmen präsentiert, die die Schönheit und die Geheimnisse der Welt um uns herum enthüllen:
🧑🏻🔬Wissenschaftler bei der Arbeit;
🌍 einzigartige Momente aus der Natur;
🔬 atemberaubende Ansichten, aufgenommen mit Hilfe der leistungsstärksten Mikroskope und Teleskope!
Diese Bilder tragen dazu bei, die Wissenschaftzugänglicher zu machen, indem sie komplexe Forschungsprozesse in der verständlichen Sprache der Fotografie und Videografie vermitteln.❤️
🗓️ Die Ausstellung ist bis zum 31. Juli 2026 zu sehen und befindet sich auf der 3. Etage des Hauses.
👀 Kommt vorbei und werft einen Blick in die wunderbare Welt der Wissenschaft, durch die Augen der besten Fotografen und Videografen! 📸
#ausstellung#wissenschaft#foto#bilder#natur#welt
Anlässlich des Welttages der Wissenschaft, der am 10. November gefeiert wird, wurde im Russischen Haus in Berlin eine neue Ausstellung „Mach dir ein Bild von Wissenschaft!“ eröffnet!😍
🖼️ In dieser Ausstellung werden die Aufnahmen ausgestellt, die die Schönheit und Geheimnisse der Welt um uns herum enthüllen:
🧑🏻🔬Wissenschaftler am Arbeiten;
🌍Einzigartige Momente aus der Natur;
🔬Atemberaubende Ausblicke, die mit Hilfe der mächtigsten Mikroskope und Teleskope aufgenommen wurden!
Diese Bilder tragen dazu bei, die Wissenschaft zugänglicher zu machen, indem sie komplexe Studien in einer verständlichen Sprache der Fotografie und Videografie vermittelt.❤️
🗓️ Die Ausstellung findet vom 11. November 2025 bis zum 31. Juli 2026 statt und befindet sich auf der 3. Etage des Hauses.
👀 Kommt vorbei und werft einen Blick in die wunderbare Welt der Wissenschaft durch die Augen der besten Fotografen und Videographen!📸
#ausstellung#wissenschaft#foto#bilder#natur#welt
Auf Anordnung des Zaren Peter I wurde am 8. Februar 1724 in St. Petersburg die Akademie der Wissenschaften gegründet. Traditionell feiern russische Wissenschaftler an diesem Datum den Tag der russischen Wissenschaft.🧑🏻🔬
🧬 Auch heute setzen Wissenschaftler Russlands diese bedeutenden Traditionen fort: Sie entwickeln die vielversprechendsten Bereiche der Wissenschaft, arbeiten an modernsten Technologien und bilden die nächste Generation von Studenten aus.
Wissenschaft ist jedoch nicht nur Forschung und Zahlen, sie ist auch Inspiration, Schönheit und Staunen. Genau das zeigt die Ausstellung im Russischen Haus in Berlin:
Ausstellung „Mach dir ein Bild von Wissenschaft!“🖼️
In dieser Ausstellung werden Aufnahmen präsentiert, die die Schönheit und die Geheimnisse der Welt um uns herum enthüllen:
🧑🏻🔬Wissenschaftler bei der Arbeit;
🌍 einzigartige Momente aus der Natur;
🔬 atemberaubende Ansichten, aufgenommen mit Hilfe der leistungsstärksten Mikroskope und Teleskope!
Diese Bilder tragen dazu bei, die Wissenschaftzugänglicher zu machen, indem sie komplexe Forschungsprozesse in der verständlichen Sprache der Fotografie und Videografie vermitteln.❤️
🗓️ Die Ausstellung ist bis zum 31. Juli 2026 zu sehen und befindet sich auf der 3. Etage des Hauses.
👀 Kommt vorbei und werft einen Blick in die wunderbare Welt der Wissenschaft, durch die Augen der besten Fotografen und Videografen! 📸
#ausstellung#wissenschaft#foto#bilder#natur#welt
Anlässlich des Welttages der Wissenschaft, der am 10. November gefeiert wird, wurde im Russischen Haus in Berlin eine neue Ausstellung „Mach dir ein Bild von Wissenschaft!“ eröffnet!😍
🖼️ In dieser Ausstellung werden die Aufnahmen ausgestellt, die die Schönheit und Geheimnisse der Welt um uns herum enthüllen:
🧑🏻🔬Wissenschaftler am Arbeiten;
🌍Einzigartige Momente aus der Natur;
🔬Atemberaubende Ausblicke, die mit Hilfe der mächtigsten Mikroskope und Teleskope aufgenommen wurden!
Diese Bilder tragen dazu bei, die Wissenschaft zugänglicher zu machen, indem sie komplexe Studien in einer verständlichen Sprache der Fotografie und Videografie vermittelt.❤️
🗓️ Die Ausstellung findet vom 11. November 2025 bis zum 31. Juli 2026 statt und befindet sich auf der 3. Etage des Hauses.
👀 Kommt vorbei und werft einen Blick in die wunderbare Welt der Wissenschaft durch die Augen der besten Fotografen und Videographen!📸
#ausstellung#wissenschaft#foto#bilder#natur#welt