@MV_Kpop · Post #6409 · 26.04.2021 г., 12:36
IZ - Missing U • 1080P HD #IZ@MV_Kpop
Hashtags
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
Пребарај: #iz
@MV_Kpop · Post #6409 · 26.04.2021 г., 12:36
IZ - Missing U • 1080P HD #IZ@MV_Kpop
Hashtags
@MV_Kpop · Post #5707 · 31.01.2020 г., 11:44
IZ - The Day • 1080P HD #IZ@MV_Kpop
Hashtags
@mv_kpop · Post #5458 · 30.11.2019 г., 14:13
IZ - Memento • 1080P HD #IZ@MV_Kpop
Hashtags
@mv_kpop · Post #4956 · 21.08.2019 г., 10:28
IZ - 너와의 추억은 항상 여름같아 • 1920x1080 Full HD #IZ@MV_Kpop
Hashtags
@mv_kpop · Post #4466 · 12.06.2019 г., 01:51
[Special Clip] IZ - Hello (Live Clip) • 1920x1080 Full HD #IZ@MV_Kpop
Hashtags
@mv_kpop · Post #4454 · 09.06.2019 г., 00:15
IZ - Hello (Band ver.) • 1920x1080 Full HD #IZ@MV_Kpop
Hashtags
@mv_kpop · Post #4429 · 04.06.2019 г., 12:00
IZ - HELLO • 1920x1080 Full HD #IZ@MV_Kpop
Hashtags
@podzemlya · Post #386 · 12.07.2021 г., 13:28
С Ижевском у меня странные отношения, он становится дальше географически и воспоминания с каждым годом выцветают все больше. Остается лишь альбом хаотичных картинок и воспоминаний в голове. За последние пять лет я даже пытался вернуться обратно и начать новую жизнь, но передумал. Потом стал появляться в нем все реже и реже. Мне кажется, что город затаил на меня обиду, поэтому когда я возвращаюсь - в воздухе витает странное чувство. Однажды атмосфера так накалилась, что мы угодили в серьёзную автоаварию прямо в центре города. Эти сложные и длинные отношения повлияли и на рассказ о нем. На мой взгляд подкаст получился не совсем цельным и гармоничным. С этим городом у меня всегда было непросто, но я его очень люблю, даже не смотря на то, что Ижевск похоже мой личный мистический город со своими секретами, которые я так и не разгадал. На этом заканчиваю тему про #iz
Hashtags
@podzemlya · Post #379 · 08.07.2021 г., 10:57
Недалекое прошлое Ижевска из моих фотоархивов, часть вторая. 1. Оружейный завод до пожара, трубы еще тоже на месте. 2. Празднование дня города. Когда я жил в Ижевске, это был безумный день, ощущение, что все жители собирались в центре и массово пили, кругом происходили драки, крики и полный бунт. 3. Вид на трубы с улица Карла Либкнехта. Выглядели как четыре головы динозавров, пейзаж был интересный, сейчас снесены. 4. Панорама города с последнего этажа 5 корпуса УдГУ. 5. Закат на кухне в общежитии, примерно тогда я потерял фотоаппарат. 6. Вид из окна моей комнаты, по центру строится армянская церковь. 7. Я стою на замерзшем Ижевском пруду. #iz
Hashtags
@podzemlya · Post #356 · 06.07.2021 г., 10:08
Недалекое прошлое Ижевска из моих фотоархивов, часть первая. 1. Набережная в густых зарослях до реконструкции 2. Преображение торгового центра "Эльгрин", здесь я работал в супермаркете (до 1994 года тут были цеха, где выпускали магнитофоны марки "Иж") 3. Мой студенческий билет в столовой второго корпуса УдГУ 4. Старый ВАЗ и два Ижевских трамвая, на фоне ныне снесенные деревянные дома. Перекресток улиц Карла Маркса и Кирова 5. Та самая реклама Уральского трастового банка. 6-7. Центральная площадь до реконструкции 8. Нелюбимый маршрут до общежития вдоль улицы Удмуртской, слева уже снесенные корпуса редукторного завода. 9-10. Одни из моих первых фотографий, 2008 год: • Три пожилые женщины у парка Кирова. • Девочка на первом льду. (сколько же им всем сейчас лет?) #iz
Hashtags
@podzemlya · Post #354 · 04.07.2021 г., 17:30
Вечерний будничный Ижевск летом, жаркое солнце уходит в закат, остывают раскалённые улицы и цехи заводов, 2017 год. Выпуск про Ижевск опубликован неделю назад, но запасы душевных сил на посты в телеграм-канал куда-то исчезли. Буду навёрстывать потихоньку. А пока вы можете перейти по ссылкам: Поставить оценку или написать отзыв подкасту «Земля» на Apple Podcasts Нажать на сердечко на Яндекс. Музыке Это очень поможет мне продолжать мой инди-подкаст. Спасибо большое! #iz
Hashtags
@podzemlya · Post #352 · 28.06.2021 г., 21:22
Шестой выпуск подкаста «Земля» посвящен городу Ижевску. Рассказ про город, в котором я прожил пять лет своей жизни. Город-завод, где облака сливаются с дымом труб, звуки станков переплетаются с мелодиями местных музыкантов, а поток воды ижевского пруда смешивается с течением жизни людей, попавших в столицу Удмуртского королевства. Apple Podcasts Яндекс.Музыка Google Podcasts Spotify Буду рад отзывам и оценкам на подкаст платформах. #iz
Hashtags