Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
“Воробей в камине”, швейцарский фильм Рамона Цюрхера, отмеченный в Локарно — это сказка-антиутопия с тонами ужасов. Фильм переносит зрителей в жестокий и искренний мир, где каждый, освобождаясь от диктата общества, которое с рождения каждому отводит свою роль, наконец, заново открывает для себя свою истинную дикую животную природу
То, что создают братья Цюрхер, режиссер и продюсер, — это не просто фильмы, а настоящие вселенные, настолько богатые деталями, что кружится голова. Попасть в их мир — это все равно, что шнырять вокруг в шляпе фокусника, извлекая интригующие и загадочные предметы
#locarno77
Со вчерашнего дня и по 2 сентября можно бесплатно посмотреть некоторые фильмы Локарно этого года из рубрики Pardi di Domani и короткометражки Open Doors ТУТ
#locarno77
Леопарды Локарно, главные награды кинофестиваля
Международный конкурс
🐆 Золотой - AKIPLĖŠA (Токсичность ) Сауле Блювайте, Литва
🐆 специальный приз жюри
MOON (Луна) Курдвин Аюб, Австрия
🐆 за лучшую режиссуру
Лауринас Барейша за SESES ( Сестры ), Литва/Латвия
🐆 лучшим актерам
Гельмине Глемжайте, Агне Кактайте, Гедрюс Киела, Паулюс Маркявичюс за SESES
и
Ким Минхи за SUYOOCHEON ( У ручья ), Южная Корея
Конкурс первого фильма
🐆 - HOLY ELECTRICITY , Тато Котетишвили, Грузия/Нидерланды
🐆 Лучший начинающий режиссер
Дениз Фернандес за HANAMI , Швейцария
🐆 лучшим актерам
— Анне Месёли за FEKETE PONT (Усвоенный урок) Балинта Шимлера, Венгрия
Международный Конкурс короткометражек
🐆 золотой -
WASHHH, режиссер Микки Лай, Малайзия/Ирландия
🐆 серебряный
- GIMN CHUME ( ГИМН ЧУМЕ ) от Ataka51, Германия/Россия
Несмотря на предположения
о возможном переносе дат, было объявлено, что следующий кинофестиваль пройдет с 6 по 16 августа 2025 года
#locarno77
Мария и Кристина живут унылой жизнью в промышленном городе и мечтают сбежать из нее с помощью модельной карьеры. Они истязают свои тела экстремальными способами, чтобы оставаться стройными и пытаются начать новую жизнь в качестве моделей вдали от дома
Главный приз — Золотой леопард кинофестиваля в Локарно получил фильм Akiplėša (Toxic) литовского режиссёра Saulė Bliuvaitė за «пронзительное видение женского тела-подростка как поля битвы»
#locarno77
На Пьяцца Гранде в Локарно показали невероятно красивый фильм «Шамбала» непальского режиссёра Мин Махадура Бхама, о живописном путешествии молодой женщины в Гималаях, который он назвал «личной историей, которую мне пришлось оставить миру»
Философия Бхама происходит из буддизма, страстным исследователем которого он является, у него также есть степень в области антропологии. Фильм рассказывает о патриархальной непальской культуре, протипоставляя архаичные ритуалы тибетских буддийских церемоний и личный духовный путь, который лежит за пределами строгих социальных норм сообщества
«Для тех, кто живет в горах, – путешествия – это часть жизни.. Но в конце концов, когда мы заглядываем внутрь себя, мы знаем, что место, откуда мы пришли, — это то, которое мы искали. Это конфликт в фильме и дилемма, которую я ношу внутри себя» - говорит режиссер
«Шамбала» - первый непальский фильм, участвовавший в программе кинофестиваля в Берлине
#locarno77
Шу работает в службе помощи пожилым людям и ее отправляют в отдаленную деревню, чтобы ухаживать за женщиной, страдающей ментальными расстройствами. Шу так удачно сдруживается с больной женщиной, что погружается в ее паранойи, ритуалы, суеверия и ужасы прошлого как в свои, родные
Посмотрела ирландский фильм «Fréwaka» на очень актуальную в современном развитом мире тему - заразительности ментальных расстройств. По фильму неясно, происходит это от развитого воображения или со скуки
В одной из ролей неожиданно узнала Александру Быстржицкую, известную по фильмах: «Слоны могут играть в футбол» Михаила Сегала, «Смерть нам к лицу»Бориса Гуца и фильме «Глубже!»
#locarno77
Цифры, которые говорят о качестве и разнообразии Локарно-2024: 11 секций, 3 конкурса и 20 призов. Миссия фестиваля заключается в том, чтобы исследовать кино со всех точек зрения с целью вдохновить, удивить, открыть разум и подвергнуть сомнению любые убеждения. В дни кинофорума на сцене вручаются призы специальным гостям, среди которых режиссеры, звезды и продюсеры из мира международного кино
#locarno77
Новый президент кинофестиваля в Локарно Майя Хоффман
предполагает изменение сроков проведения кинофестиваля на следующий год. По словам директора, август на самом деле плохой месяц, потому что, по ее словам, в это время года профессионалы кино скорее отдыхают, чем приезжают в Локарно
Ну и представляете, что творится в комментариях к этому заявлению! Майю упрекают в непрофессионализме, легкомыслии и полном непонимании реалий Локарно. Главная претензия - время проведения кинофестиваля прочно завязано на погодной возможности демонстрации фильмов на городской площади Пьяцца Гранде. В любое другое время погода непредсказуема
Напоминаю, что Пьяцца Гранде - самый большой кинотеатр под открытым небом с гигантским экраном, является центром знаменитого кинофестиваля Локарно. Каждый вечер под открытым небом здесь собираются до 8 тыс. зрителей
Обычно кинофестиваль в Локарно проводится в начале августа. Он откроется послезавтра и пройдет 7-17 августа этого года в 77-й раз
#locarno77
Голивудская классика - мюзиклы, нуарные фильмы, вестерны, комедии и военные фильмы будут показаны 7-17 августа в Локарно в программе Ретроспектива
Ретроспектива посвящена 100-летию студии Columbia Pictures
#locarno77
Программа кинофестиваля Локарно была объявлена вчера: в конкурсах 255 фильмов с 104 мировыми премьерами
Вчерашнюю презентацию программы журналисты назвали более сухой, чем в предыдущие годы, когда директором был наш местный Марко Солари. Новый директор из Базеля Майя Хоффман на конференции отсутствовала, чем снова вызывала критику местных журналистов
В основной программе эклектичный состав режиссеров: Хонг Санг-су, Ван Бинг, Бен Риверс, Пиа Маре, Сильвия Лузи и Лука Беллино, включая Алу Эддин Слим, Гюркан Келтек и Курдвин Аюб, Кристоф Хоххёуслер, братья Цюрхер и Лауринас Барейша, Мар Колла, Сара Фгайер, Марта Матеус, Сильви Баллиот и Вирджил Вернье
На Пьяцца Гранде покажут свежие каннские хиты: «Собака на суде» Летиции Дош, «Семя священного инжира» Мохаммада Расулофа и «Дикари» Клода Барраса»
За почетными наградами приедут болливудская звезда, самый богатый актер в мире, Шах Рух Хан, кинорежиссер Джейн Кэмпион(«Пианино), актриса Ирен Якоб. А также Мелани Лоран («Бесславные ублюдки») и Гийом Кане («Пляж»). Оба - главные герои нового фильма «Le Déluge» Джанлуки Джодиче, представят на Пьяцца Гранде исторический фильм о последних днях Марии Антуанетты и Людовика XVI перед казнью
В конкурсе Cineasti del presente фильм «Crickets, It's Your Turn» Ольги Коротько из Казахстана. В программе Pardo Domani две короткометражки российских режиссеров: «Гимн чуме» режиссерской группы Ataka51 и «Тусклые пятна зеленоватого цвета» режиссера анимационных фильмов Саши Свирского
#locarno77