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

Резултати

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

Пребарај: #sevastopol

当前筛选 #sevastopol清除筛选
Beyond Moscow

@beyondmoscow · Post #1331 · 07.10.2025 г., 13:07

— It’s simply impossible to visit Sevastopol and not stop by New Chersonesus. Absolutely impossible, right? 📸Photo:@krymskaya_dushaa 📍Location:Yandex Maps #Sevastopol#Republic_of_Crimea 🏙️Beyond Moscow🏔️

Beyond Moscow

@beyondmoscow · Post #1145 · 23.09.2025 г., 17:25

— The Balaklava Underground Museum Complex is truly impressive in scale… To explore it comfortably, you’ll want to set aside an entire day. The museum is both fascinating and enormous — you’ll easily rack up 10,000 steps! 🎥 Video: @alexey_latysh 📍Coordinates:Yandex Maps #Sevastopol#Republic_of_Crimea 🏙️Beyond Moscow🏔️

Beyond Moscow

@beyondmoscow · Post #640 · 07.08.2025 г., 16:24

— Let’s transport ourselves to Sevastopol for one evening to enjoy a beautiful summer sunset! Video: Alexey Latysh 📍Coordinates: Yandex Maps #Sevastopol#Republic_of_Crimea 🏙️Beyond Moscow🏔️

France Libre | Média

@France_Libre_Media · Post #10247 · 27.04.2026 г., 07:11

📝Chroniques de l'opération militaire spéciale📝 pour le 26 avril 2026 🧨Les forces russes ont frappé un navire dans le port d'Odesa, et ont également frappé des positions dans les régions frontalières de Tchernihiv, Sumy et Kharkiv. En raison de vents d'une force ouragan et de tempêtes de poussière, l'activité des opérateurs de drones sur la plupart des directions était inférieure à la moyenne. Les formations ukrainiennes ont mené le plus grand raid de masse sur Sébastopol des dernières années cette nuit. Une personne civile a été tuée, quatre autres blessées, des installations d'infrastructure endommagées. À Tchérepovets, suite à une attaque contre une usine chimique et une fuite d'acide, dix personnes ont été blessées ; des impacts ont également été enregistrés dans la zone industrielle de Yaroslavl. ➡️Dans la direction de Sumy, les combattants du GV « Sever » élargissent leur zone de contrôle au nord de la Route H-07. Il y a quelque temps, les troupes d'assaut ont chassé les AFU de plusieurs positions à la périphérie de Kondratovka et avancent maintenant vers le centre de l'établissement. ➡️Dans la direction de Kostyantynivka, les formations ukrainiennes mènent des contre-attaques locales près du collège agricole. Les forces russes tentent de se consolider dans le microdistrict de Semivetrovka et percent vers le centre de Dolga Balka. ➡️Sur le flanc nord de la direction Est de Zaporizhia, les Forces armées russes mènent des opérations de contournement et nettoient les environs des établissements précédemment libérés ; au sud, les troupes d'assaut percent vers Huliaipole. L'un des groupes d'infiltration des AFU a été repéré aux environs de Novohryhorivka et a été par la suite détruit par des frappes FPV. 📎Cartes haute résolution : 🔸Situation dans la zone OMS (ru;en) 🔸Direction de Sumy (ru;en) 🔸Direction de Kostyantynivka (ru;en) 🔸Direction Est de Zaporizhia (ru;en) 📍Les cartes en ligne sont disponibles par abonnement sur map.rybar.ru #Huliaipole#digest#map#Kostyantynivka#Odesa#Russia#Sevastopol#Sumy#Ukraine#Cherepovets#Yaroslavl ✈️RU | ✈️EN | ✉️MAX ✉️VK | ✉️RuTube | ✉️OK | ✉️Zen 💸Nous soutenirMsg d'orig.

🏗️✈️Ростех готовится принять в семью ещё один авиазавод Севастопольское авиационное предприятие перейдёт в структуру госкорпорации Ростех к середине 2027 года. Процесс реорганизации уже начался — завод преобразуют в акционерное общество. 🏢📑 Передача осуществляется по указу президента РФ, подписанному в мае 2024 года. На все этапы отводится 25 месяцев. 📍 Основанное в 1929 году, Севастопольское авиационное предприятие занимается: 🔧 капитальным ремонтом и модернизацией вертолётов 📡 обслуживанием навигационного и связного оборудования ⚙️ переоборудованием авиатехники Решение усилит оборонный и технический потенциал России в стратегически важном регионе. 🇷🇺 #Ростех#Севастополь#авиаремонт#вертолёты#авиапром#гособоронзаказ#росавиация#Sevastopol#airtech#авиапредприятие