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

Резултати

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

Пребарај: #grenada

当前筛选 #grenada清除筛选
Russian MFA 🇷🇺

@MFARUSSIA · Post #28277 · 07.02.2026 г., 12:02

🇬🇩 On February 7, #Grenada is celebrating its #IndependenceDay. Originally inhabited by Carib Indians, the island was discovered by Christopher Columbus in 1498. Until 1651, the indigenous people rebuffed the attacks by European colonisers, and even after the island had been taken over by the French, their spirit of independence endured. Proud and freedom-loving, the Caribs refused to submit, and entire tribes, including women and children, threw themselves from cliffs, choosing death over subjugation. The island later came under British rule, with Great Britain bringing in slaves from Africa in an attempt to quell the native people’s resistance. The Grenadian people’s long and arduous path to liberation from British colonial rule culminated in April 1974, when the country joined the Caribbean Community (#CARICOM) and was admitted to the UN in September. Once on the path of independence and socioeconomic progress, Grenada took in stride the challenges it faced, including the US military intervention in 1983, when the United States, in its customary heavy-handed manner, interfered in the internal affairs of the sovereign Grenadian state, seeking to impose a forced change of political leadership and effectively occupy the country. Despite ongoing external pressure, Grenada continues to pursue a sovereign foreign policy acting as a respected and independent member of CARICOM and consistently advocating for the Caribbean to remain a zone of peace. The country is also deepening mutually beneficial cooperation with regional countries, as well as with its numerous partners in Asia and Africa as part of South-South cooperation. 🤝 Diplomatic relations between our countries were established in 1979. They were severed following the US intervention and occupation of Grenada in 1983, but restored in 2002. Today, Russia’s interests in Grenada are represented on a non-resident basis by the Russian Embassy in Guyana. Grenada remains a reliable partner of the Russian Federation in the Caribbean region. 📆 September 24, 2025 marked an important milestone in Russia-Grenada relations. On the margins of the UN General Assembly, Foreign Minister Sergey Lavrov and his Grenadian counterpart Joseph Andall signed the Agreement on the Basic Principles of Relations between our countries, opening the way to expanded bilateral cooperation in areas of mutual interest. 🎉 We wish a happy national holiday to our Grenadian colleagues and the people of Grenada. We wish them peace, prosperity and continued success. #RussiaGrenada#RussiaLatinAmerica