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 слични објави

Пребарај: #collision

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

@voir_yeux · Post #12468 · 08.04.2026 г., 22:17

🇹🇷 Au moins sept personnes ont été tuées et autant ont été blessées dans une collision sur une route reliant Antalya à Isparta, dans le sud de la Turquie, a rapporté la chaîne de télévision TRT Haber. #turquie#collision#victimes

Universe Mysteries 🪐

@cosmomyst · Post #323 · 24.09.2025 г., 18:21

🪐 The galaxy known as the Tadpole Galaxy (UGC 10214), about 420 million light-years away in the constellation Draco, is famous for its long, sweeping tail that stretches over 280,000 light-years. This striking "tadpole" shape was created when another galaxy passed close by, pulling out a stream of stars, gas, and dust—a cosmic encounter that gave the Tadpole Galaxy its unforgettable, bizarre silhouette among the galaxies. ✨ #galaxies⚡#shapes⚡#collision⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space 👉subscribe Universe Mysteries 👉more Channels ​

Voir de ses propres yeux

@voir_yeux · Post #12448 · 07.04.2026 г., 14:03

🇫🇷 La situation sur les lieux de la collision entre un train à grande vitesse (TGV) et un poids lourd transportant du matériel militaire dans la commune de Nœux-les-Mines (Pas‑de‑Calais), dans le nord de la France. #france#train#collision

Voir de ses propres yeux

@voir_yeux · Post #12232 · 23.03.2026 г., 16:15

🇺🇸🛬 Deux personnes ont perdu la vie et plus de dix ont été blessées dans la collision entre un véhicule et un avion à l'aéroport LaGuardia de New York. Au total, au moins 41 personnes avaient initialement été hospitalisées, a indiqué la directrice exécutive de l'Autorité portuaire de New York et du New Jersey, Kathryn Garcia. #étatsunis#avion#collision#bilan

Universe Mysteries 🪐

@cosmomyst · Post #344 · 28.09.2025 г., 20:21

🪐 The asteroid (234) Barbara is a main-belt asteroid with a unique, highly irregular shape that may be the result of an ancient cosmic collision. At over 45 kilometers wide, Barbara is notable because radar observations revealed its silhouette resembles two objects fused together, an unusual configuration that would cause catastrophic damage if an object like this ever entered a path toward Earth. ✨ #asteroids⚡#threat⚡#collision⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space 👉subscribe Universe Mysteries 👉more Channels ​

Voir de ses propres yeux

@voir_yeux · Post #12647 · 24.04.2026 г., 23:29

🇺🇸 Deux bus sont entrés en collision près du Pentagone, faisant plus de 20 blessés. Selon la chaîne WUSA9, au moins dix des blessés sont des employés du département de la Défense américain. La police du Pentagone a confirmé l'information et a annoncé la fermeture complète du terminal de transport et de la station de métro situés à proximité du département. #bus#collision#pentagon

Voir de ses propres yeux

@voir_yeux · Post #12227 · 23.03.2026 г., 09:47

🇺🇸🇨🇦Un avion d'Air Canada Express est entré en collision avec un véhicule de piste sur le tarmac à l'aéroport LaGuardia (LGA) de New York, entraînant une fermeture temporaire, rapporte le service de suivi des vols Flightradar sur le réseau social X. Selon le journal New York Post, au moins quatre personnes ont été blessées, tandis que la chaîne NBC News a rapporté la mort du pilote et du copilote de l’aéronef. #étatsunis#avion#tarmac#collision