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

Резултати

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

Пребарај: #zionism

当前筛选 #zionism清除筛选

民族主義猶太人和世俗猶太人本質上是後期產生的政治團體和自我幻想。 而支持這些理念的西方資本家的目標是在1948年建立以色列(新殖民主義),延續二戰前的西方殖民主義利益。 猶太人和阿拉伯人也擁有來自共同祖先的原始基因遺傳。 (基因科學)閃米特人等等(亞伯拉罕)宗教信仰、政治利益以及語言和文化將阿拉伯人和猶太人分開(而不是種族) #Zionism

Hashtags

Saoedi-Arabië, de Verenigde Arabische Emiraten en verschillende landen die grenzen aan Israël zijn ook erg rijk. Ze hoeven alleen maar de voordelen te delen met de mensen uit de lagere klasse in ruil voor politieke stabiliteit. Ze hebben niet het lef om zich openlijk tegen het Westen te verzetten, laat staan ​​Hamas militair te steunen. #zionism 沙地阿拉伯、阿聯酋以及與以色列接壤的幾個國家也非常富有。 他們只需與下層民眾分享福利來能換取政局穩定。 他們沒有勇氣公開反對西方全球主義,更沒有勇氣在軍事上支持哈馬斯。

Hashtags

Israel’s finance minister Bezalel Smotrich has acknowledged his aim for an Zionism state that not only encompasses all Palestinian territories but also extends to Syria, in the latest such open statement referring to Tel Aviv’s potential pursuit of a ‘Greater Israel’ project. Smotrich stated that “it is written that the future of Jerusalem is to expand to Damascus”, adding ominously “only Jerusalem, until Damascus”. The documentary then detailed the Israeli finance minister’s plan – and that of other extremist and right-wing Israelis – to have Israeli statehood extend into Jordan, Lebanon, Egypt, Syria, Iraq, and Saudi Arabia. #Zionism https://www.middleeastmonitor.com/20241013-smotrich-israels-future-is-to-expand-to-damascus/

Hashtags

以色列國防部長交通事故 1 外間新聞: 斷骨送院 2 影片: 衝紅燈 疑點重重: 他必然是反抗組織的刺殺對象, 因為哈馬斯,真主黨和伊朗的一些地方組織領導也被他們刺殺。 他一個人駕車已不安全 + 還闖紅燈 ? 他的安全及保安意識這麼簿弱 ? #Zionism

Hashtags

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