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

Резултати

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

Пребарај: #ddj

当前筛选 #ddj清除筛选
Data Stitches

@data_stitches · Post #262 · 01.05.2022 г., 17:52

How 'Tucker Carlson Tonight' Fuels Extremism and Fear - 纽约时报分析了超过1150集"Tucker Carlson Tonight",调查揭示卡尔森是如何利用独白和屏幕信息传播种族主义和阴谋论的,其中的数据和视频(音频)交互令人着迷 #ddj

Hashtags

Data Stitches

@data_stitches · Post #228 · 25.01.2022 г., 15:00

西班牙学生去波兰读书,而德国人去爱尔兰 - 为什么Erasmus交流项目和奖学金援助不足以克服国家和家庭之间的经济不平等#ddj

Hashtags

Data Stitches

@data_stitches · Post #176 · 15.11.2021 г., 20:51

将Taylor Swift原始录音与她的重新录音进行比较,可以在播放时在备用曲目之间切换 #ddj

Hashtags

Data Stitches

@data_stitches · Post #162 · 14.11.2021 г., 11:21

半数以上的欧洲国家禁止女同性恋者获得辅助生殖,几乎三分之一的国家禁止单身女性获得辅助生殖 - 无论您是异性恋情侣,还是单身女性还是女性情侣,在欧洲获得辅助生殖都变得越来越复杂,西班牙媒体Civio最新一篇交互可视化帮助人们探索了解欧洲各地关于辅助生育的不同政策和现状 #ddj

Hashtags

Data Stitches

@data_stitches · Post #161 · 14.11.2021 г., 11:15

Remembering the 5 million lives lost to Covid-19 - 全世界已经有近 500 万人死于 Covid-19, The Straits Times 设计了花瓣图形的可视化向因此缩短生命的人们致敬 #ddj

Hashtags

Data Stitches

@data_stitches · Post #150 · 30.10.2021 г., 22:41

头奖:赌博业如何从政治捐款中获利 - 在过去的 22 年里,与赌博相关的捐助者向澳大利亚政党贡献了超过 8100 万美元 #ddj

Hashtags

Data Stitches

@data_stitches · Post #148 · 17.10.2021 г., 22:12

日常性别歧视如何阻止女性获得职业晋升 - 即使一点点的性别偏见,随着时间的推移,几乎没有女性被留在最高管理层 #ddj

Hashtags

Data Stitches

@data_stitches · Post #137 · 10.10.2021 г., 19:00

美国郊区在 2020 年转向民主党 - 美国郊区在过去十年里逐渐变蓝、种族更加多样化以及人口增长,这些都会决定民主党是否能保持其微弱的众议院席位 #ddj

Hashtags

Data Stitches

@data_stitches · Post #129 · 09.10.2021 г., 11:30

美国的富家子弟正在纽约一些最令人向往的街区悄悄地进行房地产交易,利用为低收入人群提供的税收减免 (by Bloomberg) #ddj

Hashtags

Data Stitches

@data_stitches · Post #122 · 08.10.2021 г., 08:13

Afghanistan20 - 意大利在阿富汗的急救医疗组织 EMERGENCY 制作的数据报道,回顾了20年来阿富汗各地医院治疗的数千名战争受害者数据,Accurat 工作室为其制作了可视化 #ddj

Hashtags

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