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

Резултати

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

Пребарај: #bigfive

当前筛选 #bigfive清除筛选

🇿🇦Парк слонов Тембе🐘 Парк был создан в северо-восточной части Южной Африки в 1983 году для защиты слонов, мигрировавших между ЮАР и Мозамбиком. 🌍 С 1991 года парк открыт для посетителей — сегодня здесь обитает около 250 самых крупных в мире слонов!🏞 Если вы любите сафари, в парке сможете увидеть и других представителей «большой пятёрки»: 🦁 львов, 🐆 леопардов, 🦏 носорогов и 🐃 буйволов. 🎥 Видео в режиме реального времени: 👉https://www.youtube.com/watch?v=VUJbDTIYlM4 #ЮАР#Природа#Сафари#Африка#ПаркСлонов#BigFive

🦁Kruger National Park, located in the northeast of South Africa, is the country’s oldest national park (founded 🗓in 1926) and one of the largest national parks in the world 🌍 To fully experience the park, visitors usually spend several days there. That is why campsites are located directly inside the park ⛺️ There are nine entrance gates, all of which close at night, as it is dangerous to remain in the park after dark without a guide 🌙⚠️ 🐘🦏🦬🦁🐆 Kruger National Park is home to: • about 12,000 elephants, • 5,000 rhinos, • 2,500 buffalo, • 1,500 lions, • 1,000 leopards, • and hundreds of bird species🐦 📹Video: 10 minutes with the inhabitants of Kruger National Park https://www.youtube.com/watch?v=ZnbsthIPMiw #Nature#Animals#KrugerNationalPark#SouthAfrica#BigFive#Wildlife#Africa

🦁Национальный парк Крюгера на северо-востоке ЮАР — старейший национальный парк страны (основан 🗓 в 1926 году) и один из крупнейших национальных парков мира 🌍 Чтобы по-настоящему прочувствовать масштаб и атмосферу парка, сюда приезжают на несколько дней. Именно поэтому прямо на его территории работают кемпинги ⛺️ Всего у парка 9 въездов, которые закрываются на ночь — находиться здесь после захода солнца без проводника опасно 🌙⚠️ 🐘🦏🦬🦁🐆 В Крюгере обитают: • около 12 000 слонов, • 5 000 носорогов, • 2 500 буйволов, • 1 500 львов, • 1 000 леопардов, • а также сотни видов птиц🐦 📹Видео (10 минут с обитателями парка Крюгера): https://www.youtube.com/watch?v=ZnbsthIPMiw #Природа#Животные#НациональныйПарк#Крюгер#ЮАР#BigFive#Африка

💴South African rands are, arguably, among the most beautiful banknotes and coins in the world 🌍✨ South African banknotes feature the iconic “Big Five” animals 🐘🦁🦏: • R10 — rhinoceros • R20 — elephant • R50 — lion • R100 — buffalo • R200 — leopard The reverse side of each note features Nelson Mandela, honoring his legacy as a symbol of democracy, freedom, and national unity in South Africa ✊🏿🇿🇦 #SouthAfrica#Currency#rands#BigFive#NelsonMandela#Heritage#Culture

🐆Inverdoorn Game Reserve – a true safari escape just 2.5 hours from Cape Town! 🐾 🌿 Located in the semi-arid Karoo region, Inverdoorn offers unforgettable encounters with the Big Five and cheetah conservation experiences. 🌍 Take a guided game drive, stay overnight in stylish lodges, and enjoy the stunning silence of the wild. 🌄 📍 Perfect for a weekend getaway into nature’s heart. 🎬 Video: https://www.youtube.com/watch?v=31OzaX7N5TA #SouthAfrica#Safari#Inverdoorn#Wildlife#CapeTownTrips#GameReserve#BigFive

🐘А вы знали, что… слон — один из представителей знаменитой африканской «Большой пятёрки»? 🐾 Этот термин появился у охотников на крупную дичь и обозначал пять самых опасных животных при охоте пешком в Африке. В легендарную пятёрку входят: слон, лев, леопард, африканский буйвол и носорог🦁🐆🦏 #BigFive#Африка#ЮАР#Слон#ДикаяПрирода _______________ 🐘Did you know? The elephant is one of Africa’s famous Big Five. 🐾 The term Big Five was coined by early big-game hunters and refers to the five most dangerous animals to hunt on foot in Africa. The iconic group includes the elephant, lion, leopard, African buffalo, and rhinoceros🦁🐆🦏 #BigFive#SouthAfrica#Africa #Elephant#Wildlife

🐆Inverdoorn Game Reserve — сафари под Кейптауном! 🇿🇦 🌿 Всего в 2,5 часах езды от Кейптауна находится заповедник «Инвердурн» — уникальное место в полупустыне Кару, где можно увидеть Большую африканскую пятёрку, поучаствовать в программах по защите гепардов и насладиться настоящей дикой природой. 🌍 Стильные лоджи, тишина саванны и профессиональные гиды сделают поездку незабываемой. 🌄 📍 Идеальный вариант для сафари на выходные. 🎬 Видео: https://www.youtube.com/watch?v=31OzaX7N5TA #ЮАР#Сафари#Inverdoorn#ДикаяПрирода#ПутешествияЮАР#BigFive#Гепард

🇿🇦Tembe Elephant Park🐘 The park was established in the north-eastern part of South Africa in 1983 to protect elephants migrating between South Africa and Mozambique. 🌍 It opened to visitors in 1991 and is now home to about 250 of the largest elephants in the world. 🏞 If you’re into safaris, you can also spot the rest of the Big Five — 🦁 lions, 🐆 leopards, 🦏 rhinos, and 🐃 buffalo. 🎥 Live video: 👉https://www.youtube.com/watch?v=VUJbDTIYlM4 #SouthAfrica#Nature#Safari#BigFive#Elephants#Tembe#Wildlife#Travel#Africa