Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
the truffle hunters, 2020, m. dweck, g. kershaw
север италии, пьемонт. будни пожилых людей, которые в одиночку ходят с собаками по лесам в поисках местных сокровищ. трюфель находится под землёй, пёс унюхивает, разрывает. потом хозяин продаёт его дилеру, а тот перепродает в рестораны, носит на выставки для ценителей. любимые сцены - от первого лица лающих охотников; застольные беседы с ними же. #doc
А мы напоминаем, что программа Bastau Docs есть на сайте фестиваля.)
Bastau Docs - сегодня, Синий зал #doc
НЕОБРАТИМОСТЬ (Сказка времени, которое не вернётся) - 14:00
Павле Терзич, Сербия, 2023, 107 мин
Из Детройта, через Чикаго, в направлении Манчестера и дальше к Берлину и Белграду. Независимо от того, звучит ли рейв на подпольной (в прямом и в переносном смысле) клубной площадке или на сценах больших залов, электронный звук становится своего рода новой музыкальной религией.
ГОЛОС ЛЕДНИКА - 16:00
Ядыкар Ибраимов, Казахстан, 2023, 80 мин
Хорошо известно, что ледники тают из-за климатического кризиса, но как именно это происходит? Эко-триллер о таянии ледника Туюксу в Казахстане — и работа ученых, которые документируют этот процесс.
Коллектив Women Make Docs анализирует фильм «Голос ледника»
ДОЧЬ ХУДОЖНИКА - 18:00
Маргарита Линтон, Янив Линтон, Израиль, 2022, 60 мин
Она присоединяется к экскурсии по выставке известного художника. Мужчина на автопортретах — её отец, но об этом знают лишь немногие. Она связывается с художником впервые за десять лет и делится своей идеей снять фильм об их отношениях, которые возобновились благодаря его творчеству. Взволнованный художник отправляет её снимать свою выставку. По ходу работы над фильмом она обнаруживает, что встреча с человеком, стоящим за портретами, является для нее настоящим испытанием. «Дочь художника» рисует ошеломляющий и удивительный портрет отношений, которые могут существовать только в кино.
Моше Циммерман, Пицца в Освенциме, 2008
главный герой, Данни Ханох, переживший все ужасы Холокоста, кочуя из одного концлагеря в другой исполняет свою мечту: возвращается, чтобы посетить лагеря вместе со своими детьми. у него есть план, он хочет снова переночевать в бараке. воспоминания о кошмаре становятся травмой для следующего поколения. #doc
Fifi az khoshhali zooze mikeshad, 2013
Фифи воет от счастья
r. Mitra Farahani
полу-забытый иранский художник и скульптор Бахман Мохассес давно покинувший Тегеран живёт в итальянском отеле. он ужасающе хохочет и кашляет и с упоением рассказывает (листая каталог своих работ) как он уничтожал их. потому что не хочет оставаться в памяти потомков.
получение нового заказа обрекает на невозможность нахождения правильного оттенка краски. желание курить выступает против кашля. а камера, установленная так чтобы точно заснять первое касание кисти, по иронии записывает последние звуки.
расстояние между художником и картиной, режиссёркой (которая фарахани, но не родственница другому фарахани) и фильмом постоянно пружинит и чуть меняется пока они общаются между собой, но кажется что ни фильм, ни каталоги, ни заказчики не вызывает такого трепета как (портрет?) Фифи. такое не продаётся.
и сколько бы Мохассес не рвал свои картины раньше и не язвил вот тут он и есть. ну и нет его тоже тут.
#doc
#pulpnonfiction#doc
«Венедикт Ерофеев: посторонний». Олег Лекманов, Михаил Свердлов, Илья Симановский (РЕШ, 2018)
Биография Венички, сделанная в технике монтажа фактов и воспоминаний, запараллелена литературоведческому анализу поэмы «Москва-Петушки». Краткий вердикт: читать, подавляя мысли «ну как же так-то».
Текст про эту книгу внезапно нашел отклик у аудитории Дзена (только не читайте комментарии, просто не читайте комментарии).
#pulpnonfiction#doc
«Батенька, да вы трансформер» или «Как стать знаменитым, счастливым, найти себя и свою любовь, предсказать будущее и вылечить все болезни»
1. Для тех кто не следит за «звездами соцсети» (а именно так называется серия АСТ, в которой вышла эта книга): «Батенька, да вы трансформер» — это своеобразное, но очень любопытное медиа, напоминающее одновременно и «Русского репортера», и «Русскую жизнь».
2. В магазине книга стояла на полке «Самиздат», но в книжном понимании это, конечно, никакой не самиздат, а издание тиражом 2000 экземпляров со всеми прелестями АСТ: газетная бумага, плохая техническая верстка и корректура ниже плинтуса (корректора в выходных данных нет в принципе).
3. Верстка веб-статей перенесена в печатную книгу буквально: с батеньковским шрифтом, флаговым набором, отступами под буквицами, прерывистыми линиями на шмуцах и так далее. Не заморачивались ребята.
4. А еще в книге, конечно, нет замечательных иллюстраций, коубов и видео (или qr- кодов), которые есть в вебе
#рекурсия#doc
Дочитала сборник статей Аркадия Мильчина (тот самый, написавший «Справочник издателя и автора») о культуре издания книг. Общий посыл: правила оформления нужны не потому что так принято и такой ГОСТ (с ГОСТами Мильчин иногда спорит), а потому что поставьте себя на место читателя — как будет удобнее ему?
Если взять с полки несколько случайных книг, то неграмотное оформление будет у каждой второй. А у каждой первой не будет, только потому что это художка русского автора, причем состоящая из одного романа без деления на главы. Хоть подхватывай знамёна и пиши доколе-заметки в «Книжное обозрение».
Типичные ошибки собрала в статье.
My Octopus Teacher, 2020
Мой учитель - осьминог
r. P. Ehrlich, J. Reed
в документалистике тонкая грань между автором и обьектом изучения, а в случае с фильмом про учение осьминога почему-то постоянно кажется что эта грань нарушается. что у дайвера на протяжении года нездоровая одержимость и желание проводить дни в обществе харизматичной мадам осьминог.
#doc#leaveoctopusalone