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

Пребарај: #mashrab

当前筛选 #mashrab清除筛选
АйPulatov

@pulatov_kh · Post #3442 · 12.08.2025 г., 19:24

O‘zbek shoiri va mutafakkiri, Namangan shahrida tug‘ilib ijod qilgan Boborahim Mashrabning “Meni yo‘qlar kishim bormu” degan g‘azalini ChatGPT-5 ga berib, uslubini saqlagan holda, zamonaviy tilda, startapchilar tilidan g‘azal yozib berishini so‘radim. Mana natija: 𝐒𝐭𝐚𝐫𝐭𝐚𝐩 𝐪𝐚𝐲𝐠'𝐮𝐬𝐢 𝑻𝒐𝒔𝒉𝒌𝒆𝒏𝒕𝒅𝒊𝒏 𝒌𝒆𝒕𝒂𝒓 𝒃𝒐‘𝒍𝒔𝒂𝒎, 𝒎𝒆𝒏𝒊 𝒚𝒐‘𝒒𝒍𝒂𝒓 𝒇𝒐𝒍𝒍𝒐𝒘𝒆𝒓 𝒃𝒐𝒓𝒎𝒖? 𝑺𝒊𝒍𝒊𝒄𝒐𝒏 𝑽𝒂𝒍𝒍𝒆𝒚’𝒅𝒂 𝒐‘𝒍𝒔𝒂𝒎, 𝒎𝒆𝒏𝒊 𝒚𝒐‘𝒒𝒍𝒂𝒓 𝒇𝒐𝒖𝒏𝒅𝒆𝒓 𝒃𝒐𝒓𝒎𝒖? 𝑸𝒂𝒏𝒊 𝒄𝒐-𝒇𝒐𝒖𝒏𝒅𝒆𝒓 𝒔𝒂𝒇𝒅𝒐𝒔𝒉𝒊𝒎, 𝒑𝒊𝒕𝒄𝒉 𝒅𝒆𝒄𝒌 𝒌𝒐‘𝒕𝒂𝒓𝒊𝒃 𝒚𝒖𝒓𝒕𝒅𝒐𝒔𝒉𝒊𝒎, 𝑰𝒏𝒗𝒆𝒔𝒕𝒐𝒓𝒅𝒂𝒏 𝒕𝒆𝒓𝒎 𝒔𝒉𝒆𝒆𝒕 𝒐𝒍𝒔𝒂𝒎, 𝒎𝒆𝒏𝒊 𝒚𝒐‘𝒒𝒍𝒂𝒓 𝒎𝒆𝒏𝒕𝒐𝒓 𝒃𝒐𝒓𝒎𝒖? 𝑴𝑽𝑷 𝒔𝒉𝒂𝒓𝒃𝒂𝒕𝒊 𝒊𝒄𝒉𝒅𝒊𝒎, 𝒑𝒊𝒗𝒐𝒕𝒅𝒆𝒌 𝒒𝒂𝒚𝒏𝒂𝒃𝒐𝒏 𝒕𝒐𝒔𝒉𝒕𝒊𝒎, 𝑺𝒆𝒆𝒅 𝒓𝒐𝒖𝒏𝒅 𝒃𝒐𝒔𝒒𝒊𝒄𝒉𝒅𝒂𝒏 𝒐‘𝒕𝒅𝒊𝒎, 𝒎𝒆𝒏𝒊 𝒚𝒐‘𝒒𝒍𝒂𝒓 𝒂𝒏𝒈𝒆𝒍 𝒃𝒐𝒓𝒎𝒖? 𝑻𝒖𝒔𝒉𝒖𝒃𝒅𝒖𝒓 𝒃𝒐𝒔𝒉𝒊𝒎𝒂 𝒅𝒆𝒂𝒅𝒍𝒊𝒏𝒆, 𝒃𝒖𝒓𝒏 𝒓𝒂𝒕𝒆 𝒐𝒔𝒉𝒊𝒃 𝒑𝒊𝒑𝒆𝒍𝒊𝒏𝒆, 𝑷𝒊𝒕𝒄𝒉𝒊𝒎𝒏𝒊 𝑽𝑪𝒈𝒂 𝒃𝒆𝒓𝒔𝒂𝒎, 𝒎𝒆𝒏𝒊 𝒚𝒐‘𝒒𝒍𝒂𝒓 𝒑𝒂𝒓𝒕𝒏𝒆𝒓 𝒃𝒐𝒓𝒎𝒖? 𝑻𝒖𝒓𝒂𝒓𝒈𝒂 𝒓𝒖𝒏𝒘𝒂𝒚 𝒚𝒐‘𝒒𝒕𝒖𝒓, 𝒕𝒓𝒂𝒄𝒕𝒊𝒐𝒏 𝒑𝒂𝒔𝒕, 𝒓𝒆𝒗𝒆𝒏𝒖𝒆 𝒚𝒐‘𝒒𝒕𝒖𝒓, 𝒀𝒖𝒓𝒂𝒌𝒅𝒂 𝒖𝒏𝒊𝒄𝒐𝒓𝒏 𝒐𝒓𝒛𝒖, 𝒎𝒆𝒏𝒊 𝒚𝒐‘𝒒𝒍𝒂𝒓 𝒖𝒔𝒆𝒓 𝒃𝒐𝒓𝒎𝒖? 𝑸𝒂𝒓𝒐𝒓𝒊𝒎 𝒚𝒐‘𝒒 𝒆𝒙𝒊𝒕 𝒅𝒆𝒔𝒂𝒎, 𝑶‘𝒛𝒃𝒆𝒌𝒊𝒔𝒕𝒐𝒏𝒅𝒂 𝒔𝒄𝒂𝒍𝒆 𝒅𝒆𝒔𝒂𝒎, 𝑫𝒖𝒏𝒚𝒐𝒏𝒊 𝒆𝒙𝒑𝒂𝒏𝒅 𝒒𝒊𝒍𝒊𝒃 𝒔𝒐𝒕𝒔𝒂𝒎, 𝒎𝒆𝒏𝒊 𝒚𝒐‘𝒒𝒍𝒂𝒓 𝒄𝒍𝒊𝒆𝒏𝒕 𝒃𝒐𝒓𝒎𝒖? 𝑩𝒖 𝒎𝒊𝒔𝒌𝒊𝒏 𝒛𝒐𝒓 𝒔𝒕𝒂𝒓𝒕𝒂𝒑𝒑𝒆𝒓𝒏𝒊 𝒌𝒊𝒔𝒉𝒊 𝒉𝒐𝒍𝒊𝒏𝒊 𝒃𝒊𝒍𝒎𝒂𝒚𝒅𝒖𝒓, 𝑩𝒖 𝒚𝒆𝒓𝒅𝒊𝒏 𝑰𝑷𝑶 𝒒𝒊𝒍𝒔𝒂𝒎, 𝒎𝒆𝒏𝒊 𝒚𝒐‘𝒒𝒍𝒂𝒓 𝒔𝒖𝒑𝒑𝒐𝒓𝒕𝒆𝒓 𝒃𝒐𝒓𝒎𝒖? #Mashrab#ChatGPT5#ZamonaviyTalqin Abrorbek Sharipov, Linkedin dagi postidan olindi. @paiziev24