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

Резултати

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

Пребарај: #kpgciputat

当前筛选 #kpgciputat清除筛选
Gusdurian.Net

@gusduriannet · Post #1719 · 10.09.2019 г., 02:09

🎊 *GUSDURian Ciputat Proudly Present* 🎊 📜 *KELAS PEMIKIRAN GUS DUR* 📜 Halo gaess, ada kabar baik nih bagi kamu yang udah nunggu-nunggu kapan KPG Ciputat diadakan. Pas banget Jaringan GUSDURian Ciputat sedang buka pendaftaran Kelas Pemikiran Gus Dur untuk yang pertama kalinya #1 Persyaratan : 1. Berusia 19 - 25 Tahun 2. Menulis Essay atau membuat video tentang 9 nilai pemikiran Gus Dur dan di upload di Instagram serta Tag Ig GUSDURian Ciputat 3. Berdomisili di wilayah Ciputat 4. Bersedia mengikuti acara sampai selesai 5. Siap mengikuti follow up KPG 6. Siap mengikuti tahap seleksi yang tertera TIMELINE : *Pendaftaran Online*: Tanggal 8-30 September 2019 dengan mengisi form https://tinyurl.com/KPGCiputat2019 atau klik link di BIO instagram @gusdurian_ciputat *Pengumuman* : Tanggal 6 Oktober 2019 *Technical meeting* : Tanggal 9 Oktober 2019 *Pelaksanaan* : Tanggal 12-13 Oktober 2019 *MORE INFORMATION* Official Instagram : @gusdurian_ciputat Whatsapp : 0899-2033-155 ( sys ) 082213229979 ( Ali ) *Gus Dur Telah Meneladankan Saatnya Kita Meneruskan* #JaringanGusDurian #KPGciputat #GusDurianCiputat

Gusdurian.Net

@gusduriannet · Post #1731 · 12.09.2019 г., 06:07

Haloo Gaes, Jaringan Gusdurian Ciputat sedang buka pendaftaran peserta *Kelas Pemikiran Gus Dur* KPG #1 Syaratnya : 1. Usia 19-25 Thn 2. Menulis Essay/Membuat Video ttg 9 Nilai Utama GD 3. Berdomisili di Ciputat 4. Bersedia mengikuti acara sampai selesai 5. Mengikuti follow up KPG Time Line: 1. Pendaftaran Peserta : 8 - 30 Sept 2019 2. Pengumuman Seleksi : 6 Oktbr2019 3. Technical Meeting : 9 Oktbr 2019 4. Pelaksanaan : 12 - 13 Oktbr 2019 Yuk ikuti dan daftarkan diri Anda di : https://tinyurl.com/KPGCiputat2019 Segera ya. Time line tertera di poster. Info jelas buka di IG : @gusdurian_ciputat CP : 08992033155 (Syis) 082213229979 (Ali) _*Gus Dur Telah Meneladankan Saatnya Kita Meneruskan*_ Cc : @jaringangusdurian@gusdurian_jkt@gusduriantangerang #jaringangusdurian #KPGciputat #gusdurianciputat - #regrann