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

Пребарај: #satusehat

当前筛选 #satusehat清除筛选
Cerdas Gunakan Obat

@cerdasgunakanobat · Post #3759 · 07.04.2023 г., 12:07

https://www.instagram.com/reel/Cqu_JZRpB4K/?igshid=MDJmNzVkMjY= . Wah, keren ini, Sahabat Sehat Apoteker Keluarga!! Ada info baru dari @satusehat_id Sudah tau bahwa aplikasi Peduli Lindungi telah berubah menjadi Satu Sehat, kan?? Nah, melalui aplikasi Satu Sehat (Satset), pasien kanker bisa cari informasi terkait obat kanker di Indonesia, harga dan dimana bisa dibeli. Buruan update aplikasi Satset versi terbaru, yaitu versi 5.3.1, biar tidak ketinggalan infonya. Semoga kita semua sehat ya, Sahabat Sehat..!. __ Beri kemudahan akses informasi obat kanker, @kemenkes_ri hadirkan layanan Wiki Obat Kanker di SATUSEHAT Mobile Hi Healthies, Ada yang baru di SATUSEHAT Mobile versi 5.3.1 Kini pengguna dapat mengakses informasi obat kanker melalui SATUSEHAT Mobile. Mulai dari deskripsi obat dan penggunaannya, lokasi faskes penyedia, hingga harga dan perbandingannya dengan negara Asia lain. Daftar obat kanker akan terus dilengkapi dan ke depannya akan diperluas ke penyakit prioritas lain. Kamu bisa mengakses layanan Wiki Obat Kanker melalui banner di beranda aplikasi. Selengkapnya cek video di atas ya, Healthies! @kemenkes_ri@pusdatinkemkes@dtokemkes #GakCumaCOVID19#SATUSEHAT#SEMUASEHAT

Cerdas Gunakan Obat

@cerdasgunakanobat · Post #3820 · 28.04.2023 г., 00:34

https://www.instagram.com/p/CrjwsE1PU8Q/?igshid=MDJmNzVkMjY= . https://m.facebook.com/story.php?story_fbid=pfbid029H7s6d8423J5U2KNFVDKL3Qj1ou4cFtnNLP9j3uv2qJhkUMmbdrGxx18jcGingn9l&id=100040565696243&mibextid=Nif5oz . Hai Sob, ada info penting dari @farmalkes@kemenkes_ri nih! __ Hai Sobat Sehat, Sekarang kamu dapat mengakses informasi terkait obat kanker melalui fitur Wiki Obat di aplikasi SATUSEHAT lho! Inovasi ini dibuat untuk memudahkan masyarakat mengakses informasi obat kanker. Diharapkan dengan adanya fitur ini, pasien kanker dapat langsung mengetahui dimana ketersediaan obat yang dibutuhkan. Yuk segera unduh aplikasi dan/atau perbaharui aplikasi SATUSEHAT Sobat Sehat untuk mengakses fitur ini! Salam sehat. #KemenkesRI#FarmalkesRI#Kanker#ObatKanker#SATUSEHAT#WikiObat