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 слични објави

Пребарај: #lm

当前筛选 #lm清除筛选

中文名: 猎魔武士(ジビエート) 话数: 12 放送开始: 2020年7月15日 放送星期: 星期三 导演: 小美野雅彦 分镜: 石山タカ明、玉田博、小美野雅彦 ☺️评分:2.9 差 💙故事简介 故事发生在2030年的日本。 一种病毒正在全世界范围内蔓延。病毒感染者会突变成怪物,而且根据年龄、性别、种族的不同,会变化出不同形态。因为变化形态的多种多样,这种病毒被称为‘Gibia’(像野生鸟兽富有多样性)。 然而,在日本这片废土之上,一对武士与忍者突然出现了。他们二人从江户时代的早期穿越而来,在研究病毒治疗方法的博士的帮助下,共同展开行动。 面对着接踵袭来的Gibia,抢夺路人食粮的亡命之徒,以及各种敌人的围攻之下,杀机重重、生死攸关的冒险之旅开始了。 🔐解压:blackcatunderthemoon 引索:#L#LM 标签:#原创 🗣请不要在讨论中打开链接,请使用频道消息的链接或者表格,讨论中的链接是失效的,百度网盘是自提取,如果没有自提取复制链接可以看到提取码,禁止在线解压

Hashtags

中文名: 浪漫追星社 话数: 12 放送开始: 2009年7月7日 放送星期: 星期二 原作: 柏原麻実「浪漫追星社」(讲谈社「月刊Afternoon」连载) 导演: 高松信司 ☺️评分:7.0 推荐 🟢故事简介 高中1年级的春天—— 回到从小学1年级开始读了两年书的小镇的大八木朔,在那里再遇的是给幼年的朔留下伤心回忆的天敌・明野美星!与朔想过的平稳的学校生活相反,在美星的强迫下朔加入了美星所属的面临废部危机的天文部……。 不但没有充分的设备,而且被学生会会长弗旻盯住的弱小的天文部。但在美星的密友・小夜、悄悄关心朔的姬、体质虚弱却对星的热情是别人几倍的路万部长、虽是写真部却经常在天文部的江户川等众多个性的人的影响下,朔也渐渐爱上了星空…… 🌐OneDrive:点击下载 🗂百度网盘:点击下载 📁往期番剧汇总表格:打开 🔐解压:blackcatunderthemoon 引索:#L#LM 标签:#漫改#治愈#校园

中文名: 零秒出手 话数: S1+S2 放送开始: 2005年2月5日 放送星期: 星期六 原作: 井上雄彦 导演: 宮繁之 ☺️评分:5.4 不过不失 🟢故事简介 西暦2xxx年、由地球创造出来的篮球已经遍布全宇宙了、但最顶尖的的宇宙联盟却只有外星人,反而地球选手是一个都没有。为了打破这个状况的大富翁老人・吉宗投入自己的财产计划要设立只有地球人的最强队伍。这群集合在一起的地球人中则有一位在街头长大的孩子秀吉... 2005年在WOWOW上映、2007年在日本电视台上映续集。 和原作的设定及话数有很大的不同、有许多像是吉宗亲自搜索召募地球队的队员、DT和莱斯利参加地球队的时间比其他成员还晚、参加小宇宙联盟等不同点。 🌐OneDrive:点击下载 🗂百度网盘:点击下载 📁往期番剧汇总表格:打开 🔐解压:blackcatunderthemoon 引索:#L#LM 标签:#漫改#篮球

中文名: 罗密欧的蓝天 话数: 33 放送开始: 1995年1月15日 放送星期: 星期日 导演: 楠葉宏三 脚本: 島田満 ☺️评分:8.2 力荐 🟢故事简介 19世纪后半叶的1875年,在瑞士的一个小村子,索诺纽村里的住着一位11岁少年罗密欧。在生活和平的罗密欧一家,某天在村子里出现人口贩子,这位人口贩子是被称为死神的安东尼奥‧路易尼,他用他的魔爪袭击了这个村子。把罗密欧家的稻田给烧毁,罗密欧的父亲罗伯特,他还是很坚决的拒绝要把罗密欧贩卖给他,然而他不久终于病倒了。在那之后罗密欧为了叫医生救父亲,决心把自己卖给死神路易尼,并和他签下契约。之后,罗密欧就作为烟囱清洁工,开始了向米兰的道路出发。 在旅途中罗密欧遇到同样是为了成为烟囱清洁工,而向米兰出发的少年阿尔弗雷德。到达米兰后罗密欧暂时与阿尔弗雷德分开,作为烟囱清洁工每天很辛苦的持续生活着,在与阿尔弗雷德重逢后,两个人成为了好朋友。并且也招募了其他被卖到米兰的烟囱清洁工,为了对抗不良少年乔凡尼所率领的狼团,在阿尔弗雷德的领导下,结成了“黑色兄弟”这个联盟。 🌐OneDrive:点击下载 🗂百度网盘:点击下载 📁往期番剧汇总表格:打开 🔐解压:blackcatunderthemoon 引索:#L#LM 标签:#小说改#子供向#治愈#世界名著计划