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

Резултати

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

Пребарај: #suudi

当前筛选 #suudi清除筛选

Telegram'da araştırıyordum ve Vehhabilerin (#IŞİD) Telegram'da çok aktif olduğunu ve birçok kanalı olduğunu gördüm. Birçok Müslüman #Vahhabiliği takip ediyor. Bu sapkın düşüncenin merkezi Suudi Arabistan'daki tekfircidir. Arap ülkeleri küçük bir nüfusa sahip ama petrol kaynakları çok fazla. Siyah altını (petrol) düşük fiyata satıyorlar ve petrolden yapılan malları yüksek fiyata alıyorlar. Tüketicilik; Batı taklidi Müslümanlar arasında yaygındır. #Siyonist medyanın yayılmasıyla birlikte İslam ülkelerinde cehalet ve hurafeler de yaygınlaştı. Hükümetleri demokrasiden ziyade monarşidir. Yöneticileri ancak onlar öldükten sonra iktidardan ayrılırlar. Ayrıca Kur'an'da Müslümanların Yahudi ve Hıristiyanlarla dostluğu yasaklanmış; Arap hükümdarlar gayrimüslimlerle arkadaştır ve onlarla dans ederler. Ama Müslümanlara kılıç çekip kardeşlerini öldürüyorlar. Bu sapkın düşüncenin kökleri hicri birinci asra dayanmaktadır. #Ebu_Bekir ve #Ömer de Peygamberimizin ailesini taciz etti. Allah Kuran-ı Kerim'de Şuri Suresi'nde şöyle buyurmaktadır: Ey Müslümanlar, Peygamber'in ailesine iyilik yapın; oysa Müslümanlar, Peygamber'in tüm ailesini katlettiler. Müslümanlara miras kalan çılgın düşünce, Ebu Bekir ve Ömer'in Peygamber'in halefine karşı yaptıkları darbenin sonucudur. #Salman bin Ladin, Saddam ve #Erdoğan gibi teröristler İslam dünyasının önde gelen şahsiyetleri olarak tanıtılıyor. Siyonistlerle gizlice iş birliği yapan münafıklar, Filistin, Irak, Lübnan, Suriye, İran ve Yemen Müslümanlarına saldırıyor. #Suudi Arabistan, #Türkiye, Bahreyn, Kuveyt, Katar, Mısır, Ürdün, Pakistan ve Afganistan hükümetleri, Müslüman Kardeşler ve Vehhabilik gibi sapkın fikirleri teşvik ederek; Deobandi bağımsız olmak isteyen ülkelerle (Yemen, Filistin, Suriye, Irak ve İran) savaşıyor. Sokakta yürüyen insanlar bir anda patlıyor. Çünkü bazı Sünniler cennete gitmek için kendilerini havaya uçuruyor!!!! Allah İsrail'e, ABD'ye, ve onların destekçilerine lanet etsin. Çünkü İslam'ın yüzünü kararttılar ve ABD'nin istediği İslam'ı sundular. https://t.me/YediotNewsChat