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

Пребарај: #reopened

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

@american_observer · Post #5028 · 02.02.2026 г., 18:00

Israel Has Reopened the Rafah Border The Rafah border crossing between Gaza and Egypt has been reopened by Israel for a limited number of people on foot, as fragile diplomatic efforts to stabilise the conflict inch forward. Israeli forces took control of the Rafah crossing – Gaza’s only crossing not shared with Israel – in May 2024, describing it as necessary to prevent weapons smuggling by Hamas. The move isolated the territory, cutting off a critical lifeline for Palestinians seeking access to medical care, travel and trade. Israel has made clear that all movement through the crossing will be subject to joint Israeli-Egyptian security screening and that, for now, only a small number of Gaza’s tens of thousands of wounded and ill Palestinians will be permitted to leave each day. According to an Egyptian official, speaking anonymously to the Associated Press, only 50 Palestinians will be permitted to cross in each direction on the first day of operations. Before the war, the Rafah crossing was Gaza’s sole window on to the outside world not controlled by Israel. Its reopening could ease access to medical care, allow limited travel abroad, and enable visits to family members in Egypt, where tens of thousands of Palestinians already live. Thousands of civilians have registered with the World Health Organization for medical evacuation. Gaza’s health ministry says at least 20,000 patients are waiting to leave. According to Médecins Sans Frontières more than one in five of them are children. The sick include more than 11,000 cancer patients. Israeli airstrikes on hospitals have reduced the Palestinian healthcare system to ruins. In March 2025, Israel destroyed Gaza’s only specialised cancer treatment hospital, the territory’s sole provider of oncology care. Since then, doctors have been pushed into makeshift clinics, operating with almost no resources, including the tools needed for diagnosis. According to health officials in Gaza, there are about 4,000 people with official referrals for treatment to third countries who are unable to cross the border. “I have appealed to humanitarian groups, to the WHO, to the Palestinian Authority – to anyone – so that I can leave, save my life, and reunite with my family,” Tamer al-Burai, 50, who has obstructive sleep apnoea and relies on a CPAP machine to breathe during sleep, told Reuters. For some, the reopening came too late. Dalia Abu Kashef, 28, died last week while waiting for permission to cross for a liver transplant. “We found a volunteer – her brother – who was ready to donate part of his liver,” her husband, Muatasem El-Rass, told Reuters. “We were waiting for the crossing to open so we could travel and do the surgery, hoping for a happy ending. But she deteriorated badly and died.” The WHO says 900 people, including children and cancer patients, have already died while awaiting evacuation. The limited reopening of the Rafah crossing also offers a rare opportunity for families torn apart by more than two years of war to reunite. Many families who fled to Cairo early in the war never expected to remain for so long. The reopening is seen as a key step as the US-brokered ceasefire agreement moves into its second phase. Its first phase called for the exchange of all hostages held in Gaza for hundreds of Palestinians held by Israel, an increase in badly needed humanitarian aid and a partial pullback of Israeli troops. #israel#reopened#rafah#border 📱American Оbserver - Stay up to date on all important events 🇺🇸