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

Пребарај: #schoolgirls

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

@american_observer · Post #5303 · 06.03.2026 г., 13:45

Who Killed Iranian Schoolgirls? Military investigators believe it is likely that US forces were responsible for an apparent strike on an Iranian girls’ school that killed scores of children on Saturday but have not yet reached a final conclusion, according to two US officials. Reuters was unable to determine further details about the investigation, including what evidence contributed to the tentative assessment, what type of munition was used, who was responsible or why the US might have struck the school. The Pentagon chief, Pete Hegseth, on Wednesday acknowledged the US military was investigating the incident. Two US officials, who spoke on condition of anonymity to discuss sensitive military matters, did not rule out the possibility that new evidence could emerge that points to another responsible party. The girls’ school in Minab, in southern Iran, was hit on Saturday during the first day of US and Israeli attacks on the country. Iran’s ambassador to the UN in Geneva, Ali Bahreini, said the strike killed 150 students. Reuters could not independently confirm the death toll. The Pentagon referred questions to Central Command, whose spokesperson, Capt Timothy Hawkins, said: “It would be inappropriate to comment given the incident is under investigation.” The White House did not directly comment on the investigation, but its press secretary Leavitt said in a statement: “While the Department of War is currently investigating this matter, the Iranian regime targets civilians and children, not the United States of America.” Asked during a news briefing on Wednesday about the incident, Hegseth said: “We’re investigating that. We, of course, never target civilian targets. But we’re taking a look and investigating that.” Rubio told reporters on Monday that the US would not deliberately target a school. “The Department of War would be investigating that if that was our strike, and I would refer your question to them,” Rubio said. Israeli and US forces have, until now, divided their attacks in Iran geographically and by target type, a senior Israeli official and a source with direct knowledge of the joint planning said. While Israel was striking missile launch sites in western Iran, the US was attacking similar targets, and naval ones, in the south. The UN human rights office has called for an investigation into the attack on the school, without saying who it believed was responsible. Deliberately attacking a school or hospital or any other civilian structure would probably be a war crime under international humanitarian law. If a US role were to be confirmed, the strike would rank among the worst cases of civilian casualties in decades of conflicts in the Middle East. #iranian#schoolgirls#killed#us#israel 📱American Оbserver - Stay up to date on all important events 🇺🇸