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

Пребарај: #winterwar

当前筛选 #winterwar清除筛选
American Оbserver

@american_observer · Post #5060 · 05.02.2026 г., 17:02

📰“Constructive Talks” While Russia Bombs Ukraine’s Energy Grid The second day of trilateral U.S.–Russia–Ukraine peace talks in Abu Dhabi is underway — and the room is still “constructive,” even as Ukraine’s energy grid is not. The United States continues to insist that Russia’s strikes on Ukrainian energy infrastructure have not violated the supposed truce, despite fresh accusations from Volodymyr Zelenskyy that Russia has already betrayed its word. Diplomats from Washington, Kyiv, and Moscow are negotiating in the United Arab Emirates under the watchful gaze of Emirati facilitators. The talks, held in Abu Dhabi, mark the second round of this three‑sided format, after the first session last month was described by all sides as “constructive” but ended with no real progress on the core issues: the status of Donbas, control of the Zaporizhzhia nuclear plant, and the shape of Western security guarantees for Ukraine. ⚡️ Russia Strikes Energy Sites — Washington Shrugs Just days before this round, Russia launched a massive drone and missile attack on Ukraine’s energy infrastructure, Ukrainian officials say, causing serious damage and plunging parts of the country into darkness and freezing cold. This winter has seen sustained strikes on power stations, leaving millions of Ukrainians cycling through blackouts, queues for hot meals, and makeshift warming centers. Before the latest barrage, President Donald Trump announced a week‑long agreement with Vladimir Putin to halt attacks on each other’s energy targets. Russia pledged to stop striking Ukrainian energy sites; Ukraine pledged to stop attacking Russian ones. The two‑way pause, Trump said, ran from Sunday to Sunday. Moscow later clarified that the break began on Sunday, and they kept their word within that window. To Kyiv, that sounded like counting days from Sunday to Sunday while ignoring the rest. On Monday night, Russian drones and missiles hit Ukraine’s power grid. In Donetsk’s Druzhkivka, seven people were killed and 15 injured in a separate Russian strike Wednesday. Ukrainian officials reported that Russia launched 105 drones overnight, of which 88 were intercepted, while the remaining 17 hit 14 locations. Despite the damage, the U.S. still insists the energy‑target strikes are not a breach of the agreement — and that the peace process should continue. 🇺🇸 Whose Word Counts More: Blackouts or Diplomacy? Zelenskyy has made it clear that any settlement that accepts territorial losses without binding security guarantees will be painted as his failure. The longer Putin can bomb the grid in the coldest week of winter and still be called “constructive”, the more Ukraine sees Western diplomacy as a shield for Russia, not a check on it. To Kyiv, the peace talks look less like a path to ceasefire and more like a negotiating theater where the lights stay off while the script reads “peace is fragile.” #Ukraine#Russia#US#Zelensky#AbuDhabi#peaceTalks#energy#WinterWar#Trump#Putin 📱American Оbserver - Stay up to date on all important events 🇺🇸