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

Резултати

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

Пребарај: #hkprotest

当前筛选 #hkprotest清除筛选
Hong Kong Democracy Movement

@hkdmovement · Post #8095 · 23.09.2025 г., 04:25

Chan Yin-lam’s Death | 陳彥霖之死 Chan Yin-lam, a 15-year-old student, died under mysterious circumstances during the 2019 Hong Kong protests. Her case sparked widespread speculation and public concern. Timeline: Sept 19, 19: Last seen barefoot leaving Youth College, heading toward Tseung Kwan O waterfront Sept 21: Reported missing by family Sept 22: Naked body found floating near Yau Tong Oct 9: Police confirmed identity as Chan Yin-lam Oct 10: Body cremated Sept 20: Jury returned an open verdict—neither suicide nor homicide confirmed Controversies: Autopsy estimated body had been in water for 15–60 hours, implying at least 16 hours unaccounted for before entering the water No signs of assault, but full nudity raised questions Allegations of protest involvement; police denied arresting her Some acquaintances claimed the woman shown on TV was not her real mother, and said they could no longer contact her #ChanYinLam#FreeHK#HKProtest

Hong Kong Democracy Movement

@hkdmovement · Post #8094 · 23.09.2025 г., 04:17

陳彥霖,15歲學生,在2019年香港反修例運動期間離奇死亡,引發社會廣泛關注與質疑。 時間線: 2019年9月19日:最後一次被目擊,赤腳離開青年學院,前往將軍澳海邊 9月21日:家人報警失蹤 9月22日 :在油塘附近海面發現全裸女屍 10月9日:警方確認屍體為陳彥霖 10月10日 :遺體火化 2020年9月:死因庭裁定「開放式裁決」,無法確定自殺或他殺 關鍵細節與爭議: 法醫報告指出屍體在水中時間為 15至60小時,意味著她失蹤後至少 16小時才進入水中 無明顯外傷,但全裸狀態引起疑慮 傳言與示威活動有關,警方否認曾拘捕她 有認識其母親的人表示,電視上的女子並非其母親,且 無法再聯絡真正的母親 #ChanYinLam#HKProtest#FreeHK#CCP

Hong Kong Democracy Movement

@hkdmovement · Post #7841 · 23.09.2024 г., 03:13

5 years ago today, Chan Yin Lam passed away mysteriously. During 2019, many HongKongers went missing or died. Several times #HKPolice were caught throwing bags with the size of a human into the sea. Her body was found in the sea, naked, yet people knew her claimed that she was a diver. #HKProtest#neverforgiveneverforget #FreeHK