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

Резултати

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

Пребарај: #rplproba2023

当前筛选 #rplproba2023清除筛选
Statistica Moldovei

@statisticamd · Post #408 · 22.11.2023 г., 09:38

Ieri, 21 noiembrie, Guvernul Republicii Moldova a găzduit ședința ordinară a Comisiei naționale pentru Recensământul populației și locuințelor (RPL) din anul 2024. În cadrul acestei ședințe, Oleg Cara, directorul general al BNS, a prezentat ✅ raportul privind realizarea Recensământului de probă al populației și locuințelor care a avut loc în perioada 28 august-10 octombrie 2023 și ✅ajustările propuse la subiectele și variabilele recensământului din 2024, pe baza rezultatelor Recensământului de probă. Un alt subiect abordat se referă la ✅ proiectul hotărârii Guvernului cu privire la data de referință a Recensământului populației și locuințelor în anul 2024 și a perioadei de colectare a datelor. 🔵 Detalii aici: https://statistica.gov.md/ro/activitatile-de-pregatire-catre-recensamantul-populatiei-si-locuintelor-din-anul-12_60807.html#RPL2024, #rplPROBA2023, #RecensamantulPopulatieiSiLocuintelor2024

Statistica Moldovei

@statisticamd · Post #335 · 11.08.2023 г., 08:07

✅În cadrul vizitelor de lucru în localitățile selectate pentru desfășurarea Recensământul de probă al populației și locuințelor, directorul general al BNS, Oleg Cara, s-a întâlnit cu membrii familiei lui Serghei si Vasilisa Surugiu din satul Crihana Veche, Cahul, pentru a le vorbi despre rolul și importanța acestui exercițiu în dezvoltarea comunităților locale și a le oferi explicații la unele aspecte care creează preocupări și temeri legate de desfășurarea recensământului. 👉Menționăm că în perioada 28 august – 10 octombrie 2023, în 11 localități din țară se va desfășura Recensământul de probă al populației și locuințelor pentru a testa aspectele de organizare a recensământului de bază care va avea loc anul viitor. #RPL2024, #rplPROBA2023, #RecensamantulPopulatieiSiLocuintelor2024

Statistica Moldovei

@statisticamd · Post #346 · 28.08.2023 г., 09:04

‼𝐀𝐬𝐭𝐚̆𝐳𝐢, 𝐥𝐮𝐧𝐢, 𝟐𝟖 𝐚𝐮𝐠𝐮𝐬𝐭 𝟐𝟎𝟐𝟑, 𝐢̂𝐧𝐜𝐞𝐩𝐞 𝐑𝐞𝐜𝐞𝐧𝐬𝐚̆𝐦𝗮̂𝐧𝐭𝐮𝐥 𝐝𝐞 𝐩𝐫𝐨𝐛𝐚̆ 𝐚𝐥 𝐏𝐨𝐩𝐮𝐥𝐚𝐭̦𝐢𝐞𝐢 𝘀̦𝐢 𝐋𝐨𝐜𝐮𝐢𝐧𝐭̦𝐞𝐥𝐨𝐫! ✅Recensământul de probă se va desfășura până la data de 𝟏𝟎 𝐨𝐜𝐭𝐨𝐦𝐛𝐫𝐢𝐞 𝟐𝟎𝟐𝟑 în sectoare alese din municipiile 𝐂𝐡𝐢𝘀̦𝐢𝐧𝐚̆𝐮 (inclusiv s. Colonița), 𝐁𝐚̆𝐥𝐭̦𝐢, 𝐒𝐨𝐫𝐨𝐜𝐚 și 𝐂𝐨𝐦𝐫𝐚𝐭, orașul 𝐓𝐚𝐫𝐚𝐜𝐥𝐢𝐚 și din satele 𝐆𝐥𝐢𝐧𝐣𝐞𝐧𝐢 din raionul Fălești, 𝐕𝐚𝐫𝐧𝐢𝐭̦𝐚 din raionul Anenii Noi, 𝐁𝐮𝐭𝐮𝐜𝐞𝐧𝐢 din raionul Orhei, 𝐂𝐫𝐢𝐡𝐚𝐧𝐚 𝐕𝐞𝐜𝐡𝐞 din raionul Cahul și 𝐂𝐨𝐩𝐚𝐧𝐜𝐚 din raionul Căușeni. 👉În această perioadă recenzorul de sector va colecta date despre persoane și gospodărie și în acest context încurajăm locuitorii selectati pentru recenzare să primească cu încredere recenzorii în casele lor și să raspundă corect și complet la toate întrebările din chestionar! #European Union in the Republic of Moldova | #UNFPA Moldova #RPL2024, #rplPROBA2023, #RecensamantulPopulatieiSiLocuintelor2024