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

Резултати

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

Пребарај: #van

当前筛选 #van清除筛选

Stk လှ"လေးတေလာလင်းပေးတာ 🙄 🔣Sticker သုံးရန်နှိပ်ပါ 🔣 🔣Premium Sticker သုံးရန်နှိပ်ပါ 🔣 လိုချင်တဲ့ Stk / pre emj လေးတေ လာ Req လို့ရ 📦 #Van

Hashtags

Turchia e dintorni

@notizieturchia · Post #3012 · 15.02.2025 г., 12:08

#Turchia: durante l'intervento delle polizie nel Comune di #Van sono state prese in detenzione provvisoria 115 persone e anche 6 giornalistə https://x.com/mlsaturkey/status/1890697497049174284?t=w1TXkiYoNnwVJzzIQCZ2-A&s=19

Hashtags

Car News

@car_news · Post #581 · 30.09.2024 г., 13:01

🚘 V-Class has been turned into a sports house on wheels 🆕 Motorhome V-Class Marco Polo has received a version from AMG. The Edition AMG Line version features a grille with diode lighting, front bumper, spoiler and alloy wheels. 👍 Under the hood is a 2.0-liter biturbodiesel engine with 237 hp and 500 Nm, the engine works with a 9-speed automatic transmition. Acceleration to 100 km/h in 8.8 seconds. The top speed is 214 km/h. 💸 The Mercedes-Benz V-Class Marco Polo Edition AMG costs €76,446. @CarsNews #Mercedes#van

Car News

@car_news · Post #654 · 16.10.2024 г., 12:23

The new 🚘electric vans have been put to the test 📆 The base for the new family will be the electric platform VAN.EA. The cars, which will replace the current Vito and V-Class, are due on the market in 2026. 🚐 The company promises both clearer distinctions between commercial and passenger versions, and the expansion of the family itself, which will be provided by the modularity of the platform. For example, in the civilian lineup Mercedes-Benz plans to include modifications from simple family vans to luxury VIP limousines. @CarsNews #Mercedes#van#EV

Turchia e dintorni

@notizieturchia · Post #3011 · 15.02.2025 г., 08:10

#Turchia: nominato commissario straordinario per il Comune di #Van, il Sindaco #AbdullahZeydan era stato condannato a 3 anni e 9 mesi di carcere con l'accusa di "sostenere organizzazioni terroristiche". Zeydan stamani non ha accettato di firmare le dimissioni, la polizia è entrata nel palazzo del Comune spaccando le porte.

科技&趣闻&杂记

@kejiqu · Post #3557 · 15.06.2025 г., 02:05

Python 创造者 Guido van Rossum 提问: '更糟即更好' 这一原则对编程语言是否仍然适用? Python 创始人 Guido van Rossum 在 Python 语言峰会上探讨了“更糟即更好”的软件开发哲学在当今是否仍然适用。他回顾了 Python 早期开发阶段,当时“Worse is better”的理念促进了社区贡献,而如今大型科技公司主导的开发模式,静态类型系统等增加了贡献门槛。Guido 表达了对早期开发模式的怀念,并讨论了 Rust 和 Python 的 PyO3 项目,后者采用了“更糟即更好”的方法。他认为,未来的开发应鼓励社区参与,让贡献者拥有发言权。Slashdot | Wikipedia 🏷#Guido#van#Rossum#Python#贡献者 📢频道👥群组📝投稿

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