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

Резултати

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

Пребарај: #earthhour

当前筛选 #earthhour清除筛选
NEA Singapore

@NEASingapore · Post #28 · 28.03.2020 г., 04:00

It's #EarthHour tonight! Don’t forget to turn off all your lights at 8.30pm today. And because we only have one earth, let’s ensure we use our resources wisely. Read more here: earthhour.org #ClimateActionSG

MND Singapore

@mndsingapore · Post #287 · 26.03.2022 г., 03:31

Here are some ideas for you to be a part of #EarthHour🌏✨ However you spend it, every small action can make a difference and help #ShapeOurFuture! Share this with your loved ones 💚

NEA Singapore

@NEASingapore · Post #1012 · 22.03.2025 г., 01:04

Switch off for #EarthHour at 8:30pm! But let's not stop there. Let this yearly reminder inspire us to continue making sustainable choices. Your everyday choices matter more than you might think! Small steps such as adopting energy-saving habits and recycling right can make a difference. Imagine these small acts being amplified by millions worldwide. 🌍💚 #EnergyEfficiency#ReduceReuseRecycle#RecycleRight

NEA Singapore

@NEASingapore · Post #327 · 25.03.2022 г., 09:45

Earth Hour 2022 is happening tomorrow, 26 Mar, at 8:30pm! Don’t forget to switch off your lights with the rest of the world. The iconic act highlights how #EveryActionCounts when it comes to protecting our environment. Check out how you can go beyond the hour to save our planet: www.earthhour.org/take-part/beyond-the-hour #EarthHour#EarthHour2022

БелГИЭ

@state_enterprise_belgie · Post #2541 · 29.03.2025 г., 05:00

⏰ 29 марта - #Час_Земли! 🌎 Традиционно в последнюю субботу первого месяца весны Беларусь присоединяется к международной экологической акции – #Час_Земли! 🇧🇾, в 17-й раз вместе с миллионами людей по всему миру выключим свет на один час, чтобы задуматься о будущем нашей планеты. 🌍 💡 Акция направлена на то, чтобы акцентировать внимание на вопросах климатических изменений, экономии энергии и экологической безопасности. Это не просто формальность, а уникальная возможность внести свой вклад! 💚 ⏰ Присоединяйтесь к #EarthHour: 29 марта с 20:30 до 21:30 выключите освещение и другие не первостепенные электроприборы в знак поддержки ответственного отношения к природе. 🌿 Сделаем нашу планету лучше вместе! #Беларусь#БелГИЭ#Час_Земли#Экология#СохранимПланету#БерегитеПрироду

🌊 Всемирный день воды: общие течения перемен 🌊 Сегодня, когда мы отмечаем Всемирный день воды и готовимся к Часу Земли, стоит вспомнить, что изменение климата не знает границ. Акватории, соединяющие Россию и Великобританию — от Балтийского моря до Арктики — молча свидетельствуют о нашей общей уязвимости. Знаете ли вы, что уровень воды в Мировом океане 📈 растет на 3,7 мм в год? Это угрожает как Санкт-Петербургу, так и Лондону. Таяние арктических льдов одинаково тревожит ученых всего мира. Британцы и россияне оставили богатое научное наследие в области исследования морей. От экспедиций 🚢 Джеймса Кука до работ Степана Макарова — мы вместе создавали принципы современной океанологии. В сегодняшних условиях именно забота о водных ресурсах может стать той платформой, где диалог все еще возможен. Молодые исследователи по обе стороны глобального диалога понимают: защита водных ресурсов — это не политический вопрос, а ❕необходимость для выживания человечества. В 20:30 сегодня миллионы людей по всему миру выключат свет на #EarthHour. Это символический жест, напоминающий, что перед лицом климатического кризиса мы все в одной лодке. 🔗 Узнайте больше о свежых исследованиях, связанных с возможными последствиями изменения климата в Арктике: https://t.me/ecobellona/2028 и https://www.youtube.com/watch?v=Rn-Mk3_ybto&feature=youtu.be #WorldWaterDay#ЧасЗемли#EarthHour#КлиматическиеДействия#ClimateAction