Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
🌎 Carved into towering cliffs in Mali, the villages of the Dogon people are famous for their complex cosmology and creation myths. Ethnographers recorded beliefs about the Sirius star system and ancestral spirits called Nommo in the early 20th century, making Dogon legends a focus of anthropological study. ✨
#Dogon⚡#mythology⚡#anthropology⚡#Africa
👉subscribe Interesting Planet
👉more Channels
L'Orchestre Kanaga de Mopti — L'Orchestre Kanaga de Mopti (Mali Kunkan, 1977)
#funk#afrobeat#griot#dogon#Mali
В 1977 году малийский правительственный лейбл Mali Kunkan выпустил серию пластинок, среди которых был и этот священный Грааль малийской музыки. Ансамбль происходит из города Мопти и назван по имени большой церемониальной маски Канага народа Догонов.
На первой стороне пластинки первым идет трек Kulukutu, вокальное вступление которого посвящено празднованию бракосочетания. Композиция N'Do N'Do обычно сопровождает танец, исполняемый детьми в дни Рамадана. Завершает первую сторону трек Sare Mabo о ткачах племени Догонов.
Вторая сторона открывается композицией Kanaga, рассказывающей о маске Догонов и танцорах, которые носят ее во время ритуальных церемоний. Затем следует песня в стиле певцов-гриотов Gambari, исполняемая во время свадебной церемонии и восхваляющая могущество жениха. Завершающий трек Sory Bamba посвящен лидеру группы Сори Бамба.
Spotify | AppleMusic | VK
TASTE OF AFRICA | Мифология догонов: лад и ритм мира 🌌
Догоны (Мали, Западная Африка) 🇲🇱 создали одну из самых глубоких космологий региона - систему, где мир держится на равновесии, а человек участвует в его сохранении через общину, ритуал и память предков 🧬🤝
Если смотреть современным взглядом, здесь легко увидеть параллели с идеей «ритмов» - как языка сонастройки человека и мира.
✨ Лад, соразмерность и «резонанс»
Догоны мыслят Вселенную как устроенную и связанную: гармония возникает там, где части согласованы между собой⚖️
Красота в понятиях догонов это ощущение правильной собранности, а образ космического яйца в мифах - символ цельного мира, где всё занимает своё место.
💧 Амма и Номмо: сотворения жизни
✨Амма - верховный творец, источник начала.
💧Номмо - первосущества/предки-духи, связанные с водой, дождём, очищением и плодородием. В символическом смысле это силы, которые приносят жизнь, порядок и “человеческий уклад”: речь 🗣️, общинность 🤝, земледельческий ритм 🌾
🦊 Юругу: тень мира и причина действовать - фигура разлада и одиночества. Он не «злодей из сказки», а напоминание: хаос всегда возможен, поэтому гармония - это работа, а не данность 🔁
👥 Двойственность и близнецы: баланс как принцип
Для догонов важна парность: мужское/женское, день/ночь ☀️🌙, сухое/влажное - мир держится на дополняющих полюсах.
👥 Образ близнецов здесь - знак правильной соразмерности: противоположности не уничтожают друг друга, а собирают целое.
Ритуал как «технология перехода»
Космология догонов - практический способ жить.
🎭 Масочные и поминальные обряды (например, dama) помогают общине пройти переходы - жизнь/смерть, утрата/восстановление - и удержать связь с предками 🕊️
🕯️ Большие циклические церемонии вроде Sigi (проходят раз в 60 лет!!!) часто описывают как обновление коллективной памяти: повторение основания мира, чтобы мир снова «собрался»
Вывод: мифология догонов напоминает:
реальность держится на ритме и ладе:
в природе 💧🌾,
в обществе 🤝
в человеческой жизни 🔄.
А красота - переживание соразмерности частей и целого✨
Для вас миф - это прежде всего история 📖 или способ удерживать равновесие ⚖️?
Пишите в комментариях🙏
🌟Ритмическое путешествие продолжается – Dogon🌟
#TasteOfAfrica#Dogon#Mali#AfricanHeritage#Mythology#Cosmology#Ritual#Dama#Sigi#Африка#Культура#Ритм#Красота#Традиции