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

Резултати

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

Пребарај: #bringmillionhome

当前筛选 #bringmillionhome清除筛选
Addis Standard

@addisstandardeng · Post #22053 · 18.04.2026 г., 08:05

72 Hours. No trace! #Million_Beyene has now been missing for 72 hours. Disappeared without a trace. He was forcibly taken from his workplace at Addis Standard newsroom, where he had continued to stand his ground and carry out his duties despite mounting pressure to walk away. Seventy-two hours on, silence persists. Despite repeated inquiries and appeals, no authority has provided any information about his whereabouts or condition. #WhereIsMillion#BringMillionHome#JournalismIsNotACrime#EndEnforcedDisappearances

Addis Standard

@addisstandardeng · Post #22075 · 21.04.2026 г., 09:37

Vanished without a trace! Six days after he was forcibly taken from the Addis Standard newsroom by a group of masked men, the whereabouts and conditions of journalist Million Beyene remain unknown. Million belongs at home with his family. #WhereIsMillion? #BringMillionHome#JournalismIsNotACrime#PressFreedom#EndEnforcedDisappearances

Addis Standard

@addisstandardeng · Post #22064 · 20.04.2026 г., 07:48

Five days without a trace! It has now been five days since #Million_Beyene was taken from his work place at Addis Standard newsroom and disappeared without a trace. Ethiopia grappling with multiple threats, a dedicated journalist who has steadfastly upheld his duty to serve the public’s right to information is one of them. #WhereIsMillion? #BringMillionHome#JournalismIsNotACrime#PressFreedom#EndEnforcedDisappearances

Addis Standard

@addisstandardeng · Post #22058 · 19.04.2026 г., 08:01

96 Hours. Still Missing! Ninety-six hours after he was taken, the whereabouts of #Million_Beyene remain unknown. Million was forcibly removed from his workplace, where he served as a journalist, working to uphold the public’s right to access the truth. In doing so, he has now been stripped of his own freedom. The silence is alarming. #WhereIsMillion#BringMillionHome#JournalismIsNotACrime#PressFreedom#EndEnforcedDisappearances

Addis Standard

@addisstandardeng · Post #22042 · 17.04.2026 г., 07:51

#Notice: 48 hours since our colleague Million Beyene disappeared without a trace. Addis Abeba - Forty-eight hours after he was taken, the whereabouts of #Million_Beyene, Managing Editor of Addis Standard, remain unknown. The #newsroom has learned that his phone was briefly active at around 10:00 p.m. last night before going silent again, raising further concern about his safety and condition. His family and colleagues are enduring growing distress. JAKENN Publishing PLC renews its urgent call for his safe and immediate return, and urges the relevant authorities, including the Addis Ababa Police and the Federal Police Commission, to act without delay to establish his whereabouts. We also call on the Ethiopian Human Rights Commission (#EHRC) to investigate this apparent enforced disappearance and ensure accountability. #WhereIsMillion #JournalismIsNotACrime #PressFreedom #BringMillionHome