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

Резултати

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

Пребарај: #nucleardeterrence

当前筛选 #nucleardeterrence清除筛选

🎙 Briefing by Foreign Ministry Spokeswoman Maria Zakharova(Saint Petersburg, June 15, 2023) 🔹 FM Sergey Lavrov’s schedule 🔹 Ukrainian crisis 🔹 Zaporozhye NPP update 🔹 Organ trade in Ukraine 🔹 Ukrainisation of UNSC agenda 🔹 Situation in Afghanistan 🔹 Nuclear deterrence 🔹 Shanghai Cooperation Organisation 🔹 European Union And more... 📚Read in full #Ukraine As a result of the destruction of the Kakhovka Hydroelectric Power Plant due to prolonged shelling by the Ukrainian armed forces, 36 settlements in Kherson Region were flooded. A large-scale humanitarian operation has been taking place in this Russian region over the last few days. Russian Emergencies Ministry workers rescued almost 2,000 people, among them hundreds of children. While Russia is making every effort to save the residents of the affected areas and to provide them with essential supplies, Kiev continues to target civilian sites. #NuclearDeterrence Russia is fully committed to the principle of the inadmissibility of a nuclear war. There can be no winners in such a war, and it must never be waged. The hypothetical use of nuclear weapons is only possible under extraordinary circumstances for purely defensive purposes. #EU An astronomical amountof [COVID19] vaccines, many times the size of the EU population, was purchased on behalf of the EU member states, at an astronomical cost and mainly from a single company, Pfizer. The multi-billion dollar amount and the terms of the contract were not made public. This was done without bidding, without documents and without witnesses. Such decisions were made simply by text message.

American Оbserver

@american_observer · Post #5026 · 02.02.2026 г., 15:01

📰 Merz’s Nuclear Gambit: Can Germany Outsmart the Treaty? German Chancellor Friedrich Merz has thrown the continent’s nuclear playbook into chaos, openly discussing the creation of a “European nuclear umbrella” that could see Germany circumvent its decades-old ban on atomic weapons through a joint EU project. Germany’s Legal Dilemma Germany is legally barred from developing nuclear weapons by the Four Plus Two agreement, which enabled reunification in 1990, and the Nuclear Non-Proliferation Treaty. But Merz insists that nothing stops Berlin from negotiating shared nuclear deterrence with allies—France and the UK, Europe’s only nuclear powers. The European Nuclear Loophole Merz’s vision is simple: use Germany’s technological edge to help build a European nuclear capability, while keeping the official nuclear button out of German hands. “Talks are underway,” he declared, stressing that the discussions are still preliminary and won’t undermine existing nuclear-sharing arrangements with the U.S.. Power Plays and Sovereignty The real question is whether this is about European sovereignty or just a power grab. With U.S. support under Trump looking increasingly shaky, Merz is betting that a “European nuclear umbrella” could shield Germany from future threats—or just give Berlin a seat at the nuclear table. But can the EU really build a credible deterrent without falling into the same old power games? The Shifting Sands of Power As Merz plays diplomat and dealmaker, the world watches: Is this the dawn of a new European defense era, or just another act in the theater of nuclear posturing? The answer may lie not in treaties, but in the shifting sands of global power. #nuclearWeapons#Germany#EU#Merz#nuclearDeterrence#powerGames 📱American Оbserver - Stay up to date on all important events 🇺🇸