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

Резултати

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

Пребарај: #weatherwednesday

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

@NEASingapore · Post #964 · 18.12.2024 г., 01:01

Altocumulus clouds putting on a post-storm sunset show! 🌅☁️ After a thunderstorm mid-level clouds like altocumulus are often spotted. These clouds are the ideal backdrop for vibrant skies because they catch sunlight, creating those deep, fiery colours we love.😍#WeatherWednesday

NEA Singapore

@NEASingapore · Post #886 · 11.09.2024 г., 01:01

#WeatherWednesday Planning for an outdoor adventure? This message is for you! While some UV exposure is important for health functions, excessive exposure may be harmful to your skin and eyes. Minimise the effects by: ✅ Using sunscreen (at least SPF 30) ✅ Using an umbrella and seeking shade ✅ Wearing sunglasses that block UVA/UVB rays ✅ Wearing a broad-brimmed hat

NEA Singapore

@NEASingapore · Post #878 · 14.08.2024 г., 01:02

#WeatherWednesday. With climate change, many countries in the world are seeing rising temperatures. ☀️🌡️ Minimise your risks of heat stress and heat-related illnesses, with the Heat Stress Advisory on myENV app (www.nea.gov.sg/myENV) or www.weather.gov.sg. Get helpful tips on how you can adjust your activities, take protective actions, and wear appropriate attire depending on the prevailing heat stress levels.

NEA Singapore

@NEASingapore · Post #692 · 25.10.2023 г., 01:02

Before heading out for prolonged outdoor activities, check out tips on how you can adjust your activities, take protective actions and wear appropriate attire depending on the prevailing heat stress levels on myENV app or www.weather.gov.sg. #WeatherWednesday

NEA Singapore

@NEASingapore · Post #646 · 20.09.2023 г., 01:01

#WeatherWednesday Mark your calendars, we're counting down to the celestial spectacle in the night sky! The Harvest Moon 🌕 is set to grace us with its luminous presence on 29 Sep 2023. Share your best photos using #WeatherWednesday and stand a chance to be featured! 📸✨

NEA Singapore

@NEASingapore · Post #571 · 21.06.2023 г., 00:31

For those who answered A, B or C, you may be experiencing pareidolia! It is the term used for the human tendency to see a specific image in random visual patterns. Most of us have experienced it at least once! #WeatherWednesday

NEA Singapore

@NEASingapore · Post #554 · 24.05.2023 г., 03:31

Have you ever seen a faint coloured ring circling the sun? These are halos, which are formed by the refraction of sunlight through ice crystals in high-level clouds. P.S. Remember not to look directly at the sun! #WeatherWednesday

NEA Singapore

@NEASingapore · Post #552 · 17.05.2023 г., 00:15

Have you ever spotted a funnel of water out at sea? This is a waterspout - a rotating column of air that descends from the base of a thunderstorm cloud. They are usually short-lived, lasting between 10 to 30 minutes before quickly dissipating when it nears the coast. There are an average of 3 occurrences of waterspouts in waters off Singapore per year. If you see one, exit the waters quickly as they can move at speeds up to 80km/h! #WeatherWednesday

NEA Singapore

@NEASingapore · Post #547 · 10.05.2023 г., 03:30

Ever noticed that it gets foggy after prolonged or heavy rainfall? This is because the air is saturated with water vapour, which then condenses around the dust particles in the air, and clumps together. Hence, the fogginess! #WeatherWednesday

NEA Singapore

@NEASingapore · Post #454 · 02.11.2022 г., 00:15

#WeatherWednesday Lightning strikes emit electromagnetic waves that can be detected by a ground-based lightning detection sensor. Singapore has 4 ground-based sensors which triangulate each strike and determine their location & characteristics! Learn more: go.gov.sg/weather-instruments

NEA Singapore

@NEASingapore · Post #451 · 26.10.2022 г., 00:30

#WeatherWednesday How many hours of sunlight do we get? The sunshine recorder measures just that! As the sun’s rays pass through the instrument’s glass globe, it burns a hole on a recorder card placed at its base. Learn more at go.gov.sg/weather-instruments

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