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

Резултати

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

Пребарај: #frappe

当前筛选 #frappe清除筛选
Voir de ses propres yeux

@voir_yeux · Post #12354 · 31.03.2026 г., 18:47

🇮🇷 4 personnes ont été tuées et plus de 20 autres blessées lors d’une frappe ayant visé un complexe religieux dans la ville de Zanjan, dans le nord-ouest de l’Iran, a rapporté l’agence ISNA. #iran#frappe#victimes

Voir de ses propres yeux

@voir_yeux · Post #12114 · 14.03.2026 г., 20:48

🇮🇷 Au moins 15 personnes ont été tuées et plusieurs autres blessées à la suite d’une frappe de missile contre une usine dans la ville iranienne d’Ispahan, a rapporté l’agence Fars. Vidéo: X / FaytuksNetwork #frappe#victimes#iran

Voir de ses propres yeux

@voir_yeux · Post #12381 · 02.04.2026 г., 21:08

🇮🇷🇺🇸🇮🇱 Les États-Unis et Israël ont de nouveau frappé le pont B1 en construction dans la ville de Karadj, en Iran, rapporte l’agence Fars. La nouvelle frappe est intervenue au moment même où les équipes de secours portaient assistance aux victimes d’une première attaque, précise le média. Les autorités locales ont appelé les habitants à éviter de s’approcher du site. #iran#conflit#frappe

Voir de ses propres yeux

@voir_yeux · Post #12126 · 16.03.2026 г., 06:34

🇮🇱💥 La police israélienne a publié des images de la chute d’une bombe à sous-munitions dans une rue de Tel-Aviv. Selon les forces de l’ordre, trois personnes ont été légèrement blessées. #victimes#frappe#israël

Voir de ses propres yeux

@voir_yeux · Post #12715 · 28.04.2026 г., 19:18

🇷🇺🇺🇦 18 civils ont été blessés à la suite d’une frappe de drones ukrainienne contre le bâtiment de l’administration du district municipal de Markovka, en République populaire de Lougansk (RPL), a indiqué le chef de la région Leonid Passetchnik. #russie#ukraine#frappe#victimes

Voir de ses propres yeux

@voir_yeux · Post #12153 · 18.03.2026 г., 17:19

🇮🇱🇮🇷 Une ogive à sous-munitions d’un missile balistique iranien a frappé un immeuble résidentiel dans la banlieue de Tel Aviv, tuant deux Israéliens âgés. La police et les services de secours sont sur place, rapporte le correspondant de TASS. #frappe#victimes#conflit

Voir de ses propres yeux

@voir_yeux · Post #12463 · 08.04.2026 г., 15:04

🇱🇧🇮🇱 Un grand nombre de morts et de blessés ont été admis dans les hôpitaux de différents quartiers de Beyrouth après une attaque israélienne de missiles. C’est ce qu’a déclaré le commissaire de la Croix-Rouge libanaise, Georges Kettaneh. #frappe#victimes#liban

Voir de ses propres yeux

@voir_yeux · Post #12827 · 07.05.2026 г., 16:56

🇮🇱🇱🇧 L’armée de l’air israélienne a mené des frappes sur la ville de Nabatieh, dans le sud du Liban. Selon l’agence Al Markaziya, la ville a été bombardée à trois reprises au cours de la matinée. Des victimes et des blessés parmi les civils sont signalés, leur nombre étant en cours de vérification. #israël#frappe#liban

Voir de ses propres yeux

@voir_yeux · Post #12480 · 10.04.2026 г., 10:07

🇮🇱🇱🇧 L'armée israélienne a mené de nouvelles frappes contre le Liban, visant des lance-roquettes à partir desquels le territoire israélien avait été pilonné, a annoncé le service de presse de l'armée. #israël#liban#frappe

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