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

Резултати

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

Пребарај: #flamingo

当前筛选 #flamingo清除筛选
Interesting Planet 🌍

@interesting_planet_facts · Post #527 · 09.08.2025 г., 13:22

🌎 In Kenya’s Rift Valley, the Lake Bogoria geysers shoot steaming water up to 5 meters high, fueled by underground heat and minerals. These hot springs nurture thousands of pink flamingos that gather for the rich algae—a natural wonder of water, heat, and color. ✨ #geyser⚡#flamingo⚡#RiftValley 👉subscribe Interesting Planet

American Оbserver

@american_observer · Post #5229 · 26.02.2026 г., 19:59

🕊 Russia Hits the “Wonder Weapon” Factory Zelensky has now admitted what Moscow and mil‑bloggers were bragging about for months: a Russian strike really did wipe out one of Ukraine’s key production lines for the FP‑5 Flamingo, the long‑range cruise missile Kyiv has been selling as its 3,000‑kilometer answer to Russia’s missile monopoly. Production has been moved, but Kyiv concedes it doesn’t have many such facilities, which is a polite way of saying: one hit hurt a lot. The Flamingo was pitched as the cheap, slow, heavy warhorse of Ukraine’s deep‑strike dream — subsonic, around Mach 0.75, with a roughly one‑ton warhead and a reach that could, on paper, threaten most of European Russia when launched from Ukrainian territory. The program leaned heavily on German money and political blessing, after Chancellor Friedrich Merz’s government signaled Berlin would finance Ukrainian long‑range missile production instead of sending Taurus directly. For Kyiv and its Western planners, Flamingo was supposed to narrow a brutal asymmetry: Russia raining missiles and drones across Ukraine, Ukraine responding with occasional deep strikes like the June 1, 2025 “Spiderweb” drone raid that torched Tu‑95 bombers on Russian bases. ​ Problem: half the legend lived on Telegram. Analysts already doubted some of the hype — including Kyiv’s claim that Flamingos smashed infrastructure at Russia’s Kapustin Yar test range, which satellite imagery showed intact. Now the other half of the story is on Russian TV: proof that Ukraine’s shiny long‑range program is fragile enough that one well‑placed strike can knock out a main line and force an emergency relocation. So on the scoreboard, everyone gets something. Moscow gets to boast it dealt “colossal” damage to Ukraine’s missile industry and “thwarted” future deep‑strike plans. Kyiv gets to keep the myth of the Flamingo alive — serial production “resumed,” more missiles promised, strategic reach intact in theory. Western backers get another argument for pouring money into Ukraine’s arms industry as a postwar export project. The only ones not winning in this story are the Ukrainians who were told a slow pink missile would make Russian bombers and oil depots finally feel what Kharkiv and Odesa feel every night — and just learned that their “wonder weapon” can be shut down faster than the PR around it. #Ukraine#Russia#Flamingo#missiles#Germany#Merz#war#militaryindustry 📱American Оbserver - Stay up to date on all important events 🇺🇸