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

Резултати

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

Пребарај: #ud

当前筛选 #ud清除筛选
Земля

@podzemlya · Post #1104 · 27.02.2024 г., 21:11

Вчера вечером собрал небольшое видео, которое давно хотел сделать. #ud

Hashtags

Земля

@podzemlya · Post #1094 · 10.01.2024 г., 20:21

Зимний Ижевск 2015 года. Очередные январские праздники, после поселка приехал в город повидать друзей. В начале года Ижевск сонный, прохожих по вечерам почти не видно. Фонари будто освещают кучи снега, аккуратно завалившего город; там, где света не хватает, все растворяется в воздушной белой мгле. Вроде и холодно, а не мерзнешь. Гуляешь по знакомому городу и, только зайдя к друзьям, чувствуешь, как на самом деле тепло в гостях. #ud

Hashtags

Земля

@podzemlya · Post #1092 · 09.01.2024 г., 22:48

Поселок Кез, Удмуртия, 7 января 2015 года. Световые столбы - это красивое природное явления которое чаще всего возникает зимой из-за сочетания влажного воздуха и морозной погоды. Повезло увидеть это, выйдя во двор своего дома после бани. #ud

Hashtags

Земля

@podzemlya · Post #1087 · 31.12.2023 г., 13:55

Январь 2020 года. деревня Дырпа, Кезский район, Удмуртия. В январском райцентре Кез может быть зимняя серость. По дороге на север пейзаж может удивительно поменяться. Все вокруг покрывается пушистым слоем снега, градиент от серого устремляется к бесконечному белому. Можно делать повороты, за которыми на просторных холмах живут разные деревни. Дома стоят посреди белоснежной пустоты, под снегом лежат непонятные конструкции, о функции которых можно только догадываться. Хороший план на новогодние каникулы. #ud

Hashtags

Земля

@podzemlya · Post #938 · 13.07.2023 г., 09:23

Летний пост про путешествие по дороге Кез — Кузьма. Расстояние около 27 км, путь занимает около получаса. Разве можно назвать это путешествием? Конечно. Пейзажи умиротворенного солнечного Предуралья, редкие машины, ощущение, что во всем мире остался ты один, лишь далекое эхо проходящих поездов где-то за лесами. Деревянные автобусные остановки, в которых тесно даже двум ожидающим; не знаю, есть ли хоть какое-то транспортное сообщение по этой дороге, но приклеенная к деревянной конструкции реклама скупки рогов лося говорит о том, что люди тут иногда появляются. Фотографии августа 2017 года. #ud

Hashtags

Земля

@podzemlya · Post #917 · 07.05.2023 г., 16:56

Село Дебесы. В детстве часто бывал здесь, потом регулярно проезжал мимо по дороге в Ижевск. Железная дорога Дебесы обошла стороной, но задолго до ее появления здесь смыкались два пути в Сибирь из Москвы и Петербурга. Называлась эта дорога Сибирский тракт, сейчас на месте встречи двух дорог находится обычный перекресток. По двум его сторонам стоят два деревянных старых здания. Грубые бревна аккуратно спрятаны и обшиты досками, углы обрамлены узорами, про наличники даже сказать нечего. Возможно эти дома не застали на себе взгляды людей, идущих или конвоируемых на восток, но их присутствие делает дух историй осязаемым. Сегодня, 7 мая, одно из зданий было уничтожено. В свой последний приезд к родителям мы побывали в Дебесах, и я сфотографировал это здание во время зимнего заката. (Второе вроде бы тоже снесут) Буднично уничтожаются крупицы историй, которые сохранились в краях, откуда я родом. В села приходят гробы погибших на войне. #ud

Hashtags

Земля

@podzemlya · Post #905 · 17.04.2023 г., 17:09

Два года назад я впервые приехал домой после долгого перерыва: с начала пандемии коронавируса не мог попасть в Россию больше полутора лет. Родной поселок Кез всегда встречает меня интересными природными явлениями, сильнейшие грозы с почти упавшими на землю облаками, непроглядные туманы, трескучие морозы, но в этот раз произошло совсем неожиданное. 17 апреля 2021 года я увидел прямо из окна своей бывшей комнаты северное сияние. Ирония заключается в том, что до этого я летал в Норвегию и побывал за полярным кругом, чтобы поймать это свечение в небе, целое путешествие через всю страну на север, но об этом возможно расскажу потом. А тут я просто вышел в свой огород, поставил камеру на забор и сделал кадр. Никуда не надо спешить и ехать, огни Авроры сами пришли прямо ко мне домой. #ud

Hashtags

Земля

@podzemlya · Post #884 · 06.04.2023 г., 19:52

Вчера разговаривал по телефону со своим папой. Он шел с работы по деревне Кузьма. В конце нашего разговора я попросил его сфотографировать деревню для меня. Он скинул мне фотографии, и случайно оказалось, что в этот момент он проходил мимо одного из самых красивых домов Кезского района, впервые я увидел и сфотографировал его в 2017 году. К сожалению, спустя 6 лет изменения оказались удручающими. #ud

Hashtags

Земля

@podzemlya · Post #471 · 20.01.2022 г., 15:16

Зимняя ночь в деревне Чепца. Кезский район, Удмуртия. Январь 2022 год #ud

Hashtags

Земля

@podzemlya · Post #466 · 03.01.2022 г., 15:54

Дизайн-код в селе Дебёсы (5.778 жителей), Удмуртия. #ud

Hashtags

Земля

@podzemlya · Post #455 · 10.12.2021 г., 16:23

Жители Ижевска дурачатся около колонки. Перекрёсток ул.Пастухова и ул.Революционной. Год неизвестен. #ud

Hashtags

Земля

@podzemlya · Post #454 · 07.12.2021 г., 10:00

Стихийная стена памяти Майкла Джексона в Ижевске, появилась практически сразу после его смерти в 2009 году. Просуществовала она достаточно долго, в данный момент снесена. Находилась эта скорбная стена в переулке между улицами Максима Горького и Карла Маркса, сейчас это улица Игоря Стыценко. Фотография 2012 года. #ud

Hashtags

ПретходнаСтраница 1 од 3Следна