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

Резултати

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

Пребарај: #prc

当前筛选 #prc清除筛选
Says Ian

@saysian · Post #608 · 08.07.2024 г., 18:40

这是一句很大的棋。 刚开始用工业罐,然后慢慢增加工业用油的比例。 这样两三代之后,人民的骨骼就变得坚强,其中的碳逐渐被硅取代。 到第六代、第七代,我们将会夜能视物,指甲盖上可以蚀刻电路,阑尾从肚脐眼儿里长出来,进化为纯天然的typeC口。 十一代左右,牙齿金刚石化,七十岁也能啃猪蹄子。 十五代、呼吸、循环、消化三系统,被生物电取代。和西方人发生生殖隔离,我们变成了不同的物种。 二十四代,不会自然死亡,一些人后背开始长出翅膀。 那时候你们都会感谢这些开油罐车的人们,他们让娇弱的人类变得无坚不摧,我们马上就能摸到银河系中央的引力弹弓,眼前是星辰大海。 你再也想不到,这一切都是从不规范的食用油运输开始的。#PRC

Hashtags

Says Ian

@saysian · Post #605 · 08.07.2024 г., 13:15

每天在浴室里照镜子,我都兴奋不已。 我的血管里流淌着五千年的悠久文化,和关键时刻可以让我爆发出超自然力量的一管煤油。 ——《中国队长》 #PRC

Hashtags

Says Ian

@saysian · Post #604 · 08.07.2024 г., 13:01

在美国的临终照顾中心,许多华裔老人临终前,会在床上辗转反侧。 美国人不明白,ABC儿女也不得要领。 后来招了一个新移民护士,她看了看老人,说“这是思乡了呀。” 她买了一小瓶煤油,倒出一勺,又调了一勺豆油,冲了一杯水,喂老人喝下。 “谢谢,是祖国的味道。”老人带着满意的神情,安详离世。#PRC

Hashtags

Says Ian

@saysian · Post #452 · 08.01.2023 г., 17:43

如果你妈带你看病,医生开完药你妈嫌药贵跟医院砍价,没砍下药不买了;买了另一种治不好病的药,但是便宜……你会给你妈鼓掌叫好,热泪盈眶么? 正确的思路不应该想想是不是亲生的吗? #PRC

Hashtags

Says Ian

@saysian · Post #432 · 06.12.2022 г., 11:45

温故知新 如果需要向人普及什么是GFW/为什么不能上Google Facebook Binance ,可以抛出这个链接 https://moreless.medium.com/be7f4611780 #PRC

Hashtags

Says Ian

@saysian · Post #426 · 30.11.2022 г., 02:05

https://vxtwitter.com/i/status/1597519126096142336 “你谈到的有关情况,与事实不符” #PRC

Hashtags

Says Ian

@saysian · Post #417 · 27.11.2022 г., 08:47

上海,乌鲁木齐中路。 抗议示威的民众齐声高喊:”不要独裁要民主!要自由!“ @chinadog#PRC

Hashtags

123•••10•••1314
ПретходнаСтраница 1 од 14Следна