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

Резултати

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

Пребарај: #miga

当前筛选 #miga清除筛选
Kayleigh McEnany

@kayleighmcenany · Post #2720 · 23.06.2025 г., 14:22

White House: If the Iranian regime refuses to come to a peaceful, diplomatic solution — which the President is still interested in engaging in ... why shouldn't the Iranian people take away the power of this incredibly violent regime? #MIGA @KayleighMcEnany

Hashtags

Kayleigh McEnany

@kayleighmcenany · Post #2729 · 24.06.2025 г., 10:02

From an Iranian to the USA and Israel: The Islamic Republic ain’t gonna make peace—remember that. Araghchi is the regime’s lapdog, and there’s no difference between reformists and hardliners. It was the reformists that imposed the hijab in the beginning of the revolution, it was the reformist government who killed more than 5000 people in just 3 days during "Aban 98" protest. Did you see how, right after the peace announcement, they struck again—and so far six people in Beer Sheba have lost their lives? And launched another missiles after ceasefire? While they are denying these officially they are celebrating about it online and in their circles. This regime is wounded and insane; it’s handing out mass death sentences to people in Iran under the name of “espionage,” and it’s even threatening us abroad that “soon we’ll be wiped out.” Their soilders and loyalists are now in the streets of Tehran and big cities going through people's phone to arrest people who have any messages, pictures and videos in support of Trump, USA and Israel or anti regime. How do you expect to make peace with this regime?! They only understand the language of force; they’ve never played by the rules of humanity, negotiation, or law. Those still talking about dialogue are either in on the power themselves or are fooling themselves. We’re not up against a normal system—we’re facing a mafia that treats people’s lives as worthless. Peace only makes sense when both sides choose life, not when one side is solely after suppression, power, and the physical elimination of its opponents. The Islamic Republic is seeking neither peace with its own people nor with the world. The only thing it understands is resistance and cost. Real peace can only be made with the people of Iran, not with a regime that has declared war on its own people for years. Please share this message and be our vioce. #Trump#Israel#USA#Iran#War#MAGA#MIGA#Peace#Regime @KayleighMcEnany