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

Резултати

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

Пребарај: #tdata

当前筛选 #tdata清除筛选

#直登号#协议号#飞机#飞机号#飞机账号#飞机会员#电报#电报号#电报账号#电报会员#TG#TG号#TG账号#TG会员#纸飞机#纸飞机号#纸飞机账号#纸飞机会员#tdata#tdata直登号#json#session#telethon#api#代充会员#会员代充#代充#会员#大会员 📢:业务清单 💡 𝐓𝐆号批发 💡频道上粉1000人=30元 💡【代充飞机会员】 😘国外号-10元/个,⑩个起批发 😘国外精养满月号——--20元/个 😘国外半年老号————30元/个 😘+222仅次于888————50元/个 😘国外一年老号———— 50元/个 😘国外两年以上老号-- 130元 😛【飞机号—--8元一个㊿个起批发】 😛3种格式可选API或tdata或协议号 🔤GV手机号可接打电话 可收发短信150元一个 —————————————————— 丨 🔤飞机会员 🔤丨 丨 丨 丨【3月会员】 15U或115元 丨 丨【6月会员】 23U或175元 丨 丨【12月会员】 36U或275元 丨 丨 🔤代开会员只需提供 @用户名 丨 —————————————————— 支持 :🥰 .😂、😢USDT 🔤各处均有投广告两字( 靠谱 ) ☎️客服 : @vip7vip8 ☎️双向用户联系 @okxjie_bot #直登号#协议号#飞机#飞机号#飞机账号#飞机会员#电报#电报号#电报账号#电报会员#TG#TG号#TG账号#TG会员#纸飞机#纸飞机号#纸飞机账号#纸飞机会员#tdata#tdata直登号#json#session#telethon#api#代充会员#会员代充#代充#会员#大会员

#直登号#协议号#飞机#飞机号#飞机账号#飞机会员#电报#电报号#电报账号#电报会员#TG#TG号#TG账号#TG会员#纸飞机#纸飞机号#纸飞机账号#纸飞机会员#tdata#json#session#telethon#api#代充会员#会员代充#代充#会员#大会员#Telegram#Premium 📢:业务清单 💡 𝐓𝐆号批发 💡频道上粉1000人=30元 💡【代充飞机会员】 😘国外号-10元/个,⑩个起批发 😘国外精养满月号——--20元/个 😘国外半年老号————30元/个 😘+222仅次于888————50元/个 😘国外一年老号———— 50元/个 😘国外两年以上老号-- 130元 😛【飞机号—--8元一个㊿个起批发】 😘3种格式可选API或tdata或协议号 🔤GV手机号可接打电话 可收发短信150元一个 —————————————————— 丨 🔤飞机会员 🔤丨 丨 丨 丨【3月会员】 15U或115元 丨 丨【6月会员】 23U或175元 丨 丨【12月会员】 36U或275元 丨 丨 🔤代开会员只需提供 @用户名 丨 —————————————————— 支持 :🥰 .😂、😢USDT 🔤各处均有投广告两字( 靠谱 ) ☎️客服 : @vip7vip8 ☎️双向用户联系 @okxjie_bot

#直登号#协议号#飞机#飞机号#飞机账号#飞机会员#电报#电报号#电报账号#电报会员#TG#TG号#TG账号#TG会员#纸飞机#纸飞机号#纸飞机账号#纸飞机会员#tdata#tdata直登号#json#session#telethon#api#代充会员#会员代充#代充#会员#大会员#Telegram#Premium 飞机会员3个月109元 飞机会员6个月169元 飞机会员12个月269元 🔗低价批发,量大来谈 大量直登号(tadta) 大量协议号(session+json) 🇺🇸美国+1 精养号¥ 8元 🇨🇦加拿大+1 精养号¥ 8元 🇹🇭泰国+66 精养号¥ 10元/个 🇲🇾马来西亚 +60 精养号¥ 10元/个 🇵🇭菲律宾+63 精养号¥9元/个 🇧🇩孟加+ 880 精养号¥8元/个 🇬🇧英国+44 精养号¥13元/个 🇰🇭柬埔寨+855, 精养号¥9元/个 🇲🇲缅甸+95 精养号¥ 8元/个 🇮🇳印度 +91 精养号¥ 10元/个 🇨🇱智利+56 精养号¥ 元/个 🇭🇰香港 +852 精养号¥12元/个 🇨🇳中国+86 精养号¥15元/个 🇲🇷毛里塔+222 精养号¥20元/个 🇷🇺俄罗斯+79 精养号¥30元/个 🇦🇪阿拉伯联合酋长国+971-30元/个 👉更多地区,请咨询客服 🎇以上均10个起批🎇 ☎️客服在线:@okxjie_bot #直登号#协议号#飞机#飞机号#飞机账号#飞机会员#电报#电报号#电报账号#电报会员#TG#TG号#TG账号#TG会员#纸飞机#纸飞机号#纸飞机账号#纸飞机会员#tdata#tdata直登号#json#session#telethon#api#代充会员#会员代充#代充#会员#大会员#Telegram#Premium

#直登号#协议号#飞机#飞机号#飞机账号#飞机会员#电报#电报号#电报账号#电报会员#TG#TG号#TG账号#TG会员#纸飞机#纸飞机号#纸飞机账号#纸飞机会员#tdata#json#session#telethon#api#代充会员#会员代充#代充#会员#大会员#Telegram#Premium#频道上粉#群上粉#上粉#打粉#拉人#星星#星币#星星代充#代充星星 📢:业务清单 💡 𝐓𝐆号批发【代充𝐓𝐆会员】 💡频道/群组上人数1000人=30元 💡【礼物代购】【星星代充】 💡【永久用户名定制】 💡【会员图标定制 头像定制】 💡【+888飞机号】源头出售 😘𝐓𝐆国外号-10元/个10起 😘国外精养满月号——--20元/个 😘国外半年老号————30元/个 😘+222仅次于888————50元/个 😘国外一年老号———— 50元/个 😘国外两年以上老号-- 99元 —————————————————— 丨 🔤飞机会员 🔤丨 丨 丨 丨【3月会员】 15U或115元 丨 丨【6月会员】 23U或175元 丨 丨【12月会员】 36U或275元 丨 丨😀代开会员只需提供 @用户名 丨 —————————————————— 支持 :🥰 .😂、😢USDT 🔤各处均有投广告两字( 靠谱 ) ☎️客服 : @vip7vip8 ☎️双向用户联系 @okxjie_bot

#直登号#协议号#飞机#飞机号#飞机账号#飞机会员#电报#电报号#电报账号#电报会员#TG#TG号#TG账号#TG会员#纸飞机#纸飞机号#纸飞机账号#纸飞机会员#tdata#json#session#telethon#api#代充会员#会员代充#代充#会员#大会员#Telegram#Premium#频道上粉#群上粉#上粉#打粉#拉人#星星#星币#星星代充#代充星星 📢:业务清单 💡 𝐓𝐆号批发【代充𝐓𝐆会员】 💡频道/群组上人数1000人=30元 💡【礼物代购】【星星代充】 💡【永久用户名定制】 💡【会员图标定制 头像定制】 💡【+888飞机号】源头出售 😘𝐓𝐆国外号-10元/个10起 😘国外精养满月号——--20元/个 😘国外半年老号————30元/个 😘+222仅次于888————50元/个 😘国外一年老号———— 50元/个 😘国外两年以上老号-- 99元 —————————————————— 丨 🔤飞机会员 🔤丨 丨 丨 丨【3月会员】 15U或115元 丨 丨【6月会员】 23U或175元 丨 丨【12月会员】 36U或275元 丨 丨😀代开会员只需提供 @用户名 丨 —————————————————— 支持 :🥰 .😂、😢USDT 🔤各处均有投广告两字( 靠谱 ) ☎️客服 : @vip7vip8 ☎️双向用户联系 @okxjie_bot