TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #121 · 20 јул.

Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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

Резултати

Пронајдени 3 слични објави

Пребарај: #ges2

当前筛选 #ges2清除筛选
ART&BRUT

@artandbrut · Post #129 · 16.03.2022 г., 13:47

В «ГЭС-2» проходят интерактивные занятия для школьных групп. На них вы вместе со специалистами Дома культуры перемещаетесь по зданию «ГЭС-2» и много фантазируете. Иногда делаете перерывы и садитесь прямо на пол в круг, чтобы на равных обсудить, что было на этом месте 100 лет назад. Делитесь своими мыслями, зарисовываете ощущения. Занятия начинаются на Проспекте. Весь класс получает индивидуальные анкеты с заданиями. По ходу движения каждый самостоятельно заполняет свой лист. Вы не только изучаете историю здания, но и определяете его место в культурном контексте города. Какие постройки есть рядом? Они подчеркивают архитектуру «ГЭС-2» или, наоборот, вступают в конфликт? Туры проводятся для групп от 7 до 30 человек. Зарегистрировать класс можно на сайте. #гэс2#ges2

ART&BRUT

@artandbrut · Post #220 · 24.03.2022 г., 16:46

Сейчас в кинотеатре «ГЭС-2 Кино» не хватает главного — зрителей, поэтому 26 марта мы начинаем кинопоказы. Сегодня уже можно приобрести билеты на первый фильм — «Худший человек на свете», скандинавскую мелодраму Йоакима Триера. Картина снята на пленку 35 мм. Работы Ингмара Бергмана, французская новая волна, Новый Голливуд и наследие скандинавского философа Сёрена Кьеркегора — то, чем вдохновлялся режиссер, создавая историю о юной студентке Юлии из Осло. Девушка часто меняет профессии, влюбляется, расстается и снова влюбляется. Много рефлексирует по этому поводу и открывает неожиданные стороны своей личности. Иными словами — ищет себя. Картина Триера (дальнего родственника датского режиссера Ларса фон Триера) — манифест так и не повзрослевших взрослых, которые всю жизнь находятся в поиске «своей» профессии, любви, судьбы. Узнать расписание и приобрести билеты можно на нашем сайте. Кадр из фильма «Худший человек на свете», 2021 #гэс2#ges2#ges2kino

International News

@intnewsagency · Post #8942 · 26.03.2026 г., 15:43

Evacuation at GES-2 Cultural Center in Moscow An evacuation is underway at the GES-2 Cultural Center in Moscow. Authorities have not yet disclosed the cause of the incident, and official information remains unavailable. Relevant services are actively ensuring the safety of visitors and staff. The situation is ongoing; stay tuned for updates. #Moscow#Evacuation#GES2#Incident The main news of Russia and the world ishere.