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

Пребарај: #briton

当前筛选 #briton清除筛选
DNAmeter

@DNAMeter · Post #2289 · 07.11.2025 г., 18:19

🇬🇧 🇬🇧 🇬🇧 The Birdlip Woman and Mirror 1st century BC — mid 1st century AD reconstruction Discovered in 1879, found in Female burial, Birdlip Gloucestershire. “Buried with a group of iron-age treasures around AD 50 along with the owner. In 1879 workmen discovered three skeletons in a quarry between Crickley and Birdlip overlooking the Vale of Gloucester. With the bones were some amazing Iron Age artifacts. The most important object is a handheld mirror of bronze.” “The Birdlip mirror design on the back of the bronze mirror is etched in to the metal. The pattern is composed of interlocking triskeles which end in groups of two or three flourishes. The handle of the mirror consists of a series of interlocking loops, the final loop, encloses another smaller circle of metal. Red enamel dots can be found on this circle, as well as on the top of the handle, where the handle meets the body of the mirror. This area could be defined as a pelta, or a small mushroom shape, similar in form to the Egyptian lotus bud.” The front of this was originally highly polished for reflections, but the rear is decorated with flowing patterns worked into the metal. It is one of the finest items of Celtic art to survive in Britain and perhaps the finest example housed outside a national museum. The smaller items are also remarkable. There are fine bronze bowls and bracelets. The stylised face of a bird or animal can be seen in a silver gilt brooch and a bronze knife handle is shaped as the head of a bull or ox. There is also a bead necklace of amber and an exotic stone possible collected from as far away as China. #ancienteuropeans#celtic#briton#ironage#england Credit: https://realmsofgoldthenovel.blogspot.com/2014/10/celtic-mirrors-birdlip-grave-group.html Credits:-https://www.instagram.com/p/DOfw6TKjCFc/?igsh=YXNqc2kwMHR1M2Fp Женщина из Бёрдлипа и Зеркало, реконструкция I века до н.э. — середины I века н.э. Обнаружено в 1879 году, найдено в женском захоронении, Бёрдлип, Глостершир. «Похоронена с группой сокровищ железного века около 50 года н.э. вместе с владельцем. В 1879 году рабочие обнаружили три скелета в карьере между Крикли и Бёрдлипом, с видом на Вейл-оф-Глостер. Со скелетами находились удивительные артефакты железного века. Самый важный предмет — это ручное бронзовое зеркало». «Дизайн зеркала из Бёрдлипа на обратной стороне бронзового зеркала выгравирован на металле. Узор состоит из переплетающихся трискелей, которые заканчиваются группами из двух или трех завитков. Ручка зеркала состоит из ряда переплетающихся петель; последняя петля заключает в себе еще один меньший металлический круг. На этом круге, а также на верхней части ручки, где ручка соединяется с корпусом зеркала, можно найти красные эмалевые точки. Эту область можно определить как пельту или небольшую грибовидную форму, похожую по форме на египетский бутон лотоса». Передняя часть была изначально сильно отполирована для отражения, но задняя часть украшена плавными узорами, выгравированными на металле. Это один из лучших образцов кельтского искусства, сохранившихся в Британии, и, возможно, лучший образец, хранящийся за пределами национального музея. Меньшие предметы также примечательны. Есть прекрасные бронзовые чаши и браслеты. Стилизованное лицо птицы или животного можно увидеть на позолоченной серебряной броши, а бронзовая рукоять ножа выполнена в форме головы быка или вола. Также есть ожерелье из янтарных бусин и экзотический камень, возможно, привезенный издалека, из Китая. \#древниеевропейцы \#кельтский \#бритт \#железныйвек \#англия Источник: https://realmsofgoldthenovel.blogspot.com/2014/10/celtic-mirrors-birdlip-grave-group.html Источник: https://www.instagram.com/p/DOfw6TKjCFc/?igsh=YXNqc2kwMHR1M2Fp @illyrianometer