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

Резултати

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

Пребарај: #customcars

当前筛选 #customcars清除筛选
Auto Life

@revheadcrypto · Post #510 · 20.09.2024 г., 21:41

🚗✨ Exciting news for luxury SUV enthusiasts! The new Range Rover Sport has been stunningly upgraded by Mansory! 🔧 The front bumper features a sleek splitter with stylish end caps and custom air vent overlays. The body kit includes new side skirts and a diffuser that perfectly complements the bespoke exhaust tips. 🔥 The Range Rover Sport SV boasts an alternative hood, unique inserts around the grille, and exclusive wheels available in 23 or 24 inches! 💰 While the price for these upgrades hasn't been disclosed, the demo model is already up for sale! #RangeRoverSport#Mansory#LuxurySUV#CarEnthusiast#CustomCars#AutoDesign#LuxuryLifestyle#Auto

Auto Life

@revheadcrypto · Post #310 · 13.08.2024 г., 17:04

🌟 Introducing the Rolls-Royce Spectre with Spofec Customizations! 🚗✨ The German tuning experts at Spofec have taken the iconic Rolls-Royce Spectre to a whole new level! 🔥 🖤 New Features: - Sleek Front Splitter with stylish daytime running lights 💡 - Side Skirts for a more aggressive profile 🏎️ - Rear Spoiler & Diffuser for enhanced aerodynamics 🌪️ - All components finished in a stunning black without chrome accents 🖤 📏 Performance Enhancements: - Lowered suspension by 35mm for that perfect stance ⬇️ - Massive 24-inch Vossen SP3 wheels for an unforgettable look! 🛞 #RollsRoyce#Spectre#Spofec#LuxuryTuning#CarEnthusiast#CustomCars#VossenWheels#Auto

Auto Life

@revheadcrypto · Post #607 · 27.10.2024 г., 09:53

🚗✨Brabus Transforms Mercedes-AMG SL into a 1000-HP Shooting Brake!🔥 The new body and aerodynamic features are crafted entirely from carbon fiber. The turbocharged V8 has been enlarged from 4.0 to 4.5 liters, and now, combined with an electric motor on the rear axle, the powertrain delivers a staggering 1000 HP and 1620 Nm of torque! 💪⚡ These bespoke three-door beauties will be built to order, tailored to individual specifications. Pricing is not publicly disclosed. 💎 #Brabus#MercedesAMG#ShootingBrake#1000HP#LuxuryCars#CarEnthusiasts#CustomCars#AutomotiveExcellence#CarbonFiber#Auto

Auto Life

@revheadcrypto · Post #630 · 09.11.2024 г., 10:04

🚗💨Introducing the Doughboy: A Mind-Blowing Restomod with 2838 HP!💥 At the SEMA Show, we unveiled a beast that redefines power and performance! 🔥 This incredible V8 engine boasts a staggering 8.8 liters of displacement and is equipped with dual turbochargers, pushing the limits of automotive engineering. 💪✨ 🔧 With the engine strategically shifted 40 cm back towards the center of the wheelbase, every detail has been meticulously crafted from scratch, including the intake, exhaust, and cooling systems. 🛠️ 💎 Custom parts were expertly created using CNC machining and 3D printing technology, showcasing innovation at its finest. Get ready to experience the future of restomods! 🚀 #Doughboy#SEMA2023#Restomod#V8Power#Turbocharged#CarEnthusiast#AutomotiveInnovation#CustomCars#CNC#Auto