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

Резултати

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

Пребарај: #leetcode

当前筛选 #leetcode清除筛选
Dasturlash hayoti️️ ️

@dasturlash_hayoti · Post #3370 · 17.07.2024 г., 07:04

#leetcode#sodda Oxirgi so'zning uzunligi ❔ So'z va bo'sh joylardan iborat s qator berilgan. Satrdagi oxirgi so'zning uzunligini qaytarib beruvchi dastur tuzing. Misol uchun: Input: s = "Hello World" Output: 5 Izoh: Oxirgi so'z uzunligi 5 bo'lgan "World". 💬 Dastur kodini skrinshot holatda yoki nusxalagan holatda izohlarda qoldirishingiz mumkin. Keyingi postda dastur natijasini joylayman. ⚠️Misolni siz xohlagan dasturlash tilida bajarishingiz mumkin. 💻@jonibek_turapov — bilan yuqori kelajak sari

Dasturlash hayoti️️ ️

@dasturlash_hayoti · Post #3947 · 28.08.2025 г., 13:52

#tekin#LeetCode#Dasturlash#DasturlashHayoti 🚀LeetCode masalalarining video darslari endi botda! @texnologiyait_bot ga kiring → Dasturlash tugmasi → LeetCode masalalari bo‘limi 💡 O‘rganing, yeching va do‘stlaringiz bilan ulashing! 👉Bot:@texnologiyait_bot 💻@dasturlash_hayoti — kichik sirlar, katta foyda!😉

Как я оптимизировал Swift код до «глюка» в статистике 🫠 Зашел на LeetCode решить 4Sum II, но в процессе затянуло — захотелось сделать максимально эффективное решение. Что в итоге накодил: Сначала посчитал частоту чисел в массивах, чтобы не перебирать дубликаты. Выкинул второй словарь и лишние проходы, чтобы сэкономить память. Убрал лишние замыкания, чтобы Swift не тратил время на их вызов. Результат на скрине: По цифрам всё супер — 47 ms и 19.48 MB. Система пишет Beats 100.00%, то есть решение быстрее всех в базе. Но вот в чем ирония: на графике моя иконка стоит на столбике 104 ms. Это как если бы ты пробежал марафон быстрее всех, а судьи поставили тебя в очередь к тем, кто еще на середине дистанции, и их надо дождаться. ⏱️ Цель достигнута — код летает, а то, что иконка не на своем месте, это уже баг платформы, а не алгоритма. Эту задачу решали несколько сотен тысяч людей. #leetcode#swift#алгоритмы#iosdev

Dasturlash hayoti️️ ️

@dasturlash_hayoti · Post #3981 · 30.09.2025 г., 08:41

Doimiy o‘z ustingizda ishlash uchun eng mashhur saytlar Men doimiy ravishda mantiqiy fikrlash va algoritmik masalalar ustida ishlashga harakat qilaman. Quyida men foydalanadigan va sizga ham tavsiya qiladigan platformalar ro‘yxatini keltiraman. 1.HackerRank — algoritm, data structure va dasturlash tillari bo‘yicha bosqichma-bosqich mashqlar. 2.RoboContest.uz — o‘zbek tilidagi masalalar platformasi, yangi boshlovchilar uchun juda qulay. 3.LeetCode — intervyu savollari va amaliy algoritmik masalalar uchun eng mashhur manba. 4. Project Euler — matematik mantiqqa asoslangan murakkab va qiziqarli masalalar. 5.Codeforces — tezkor musobaqalar (contests) va turli darajadagi masalalar. Competitve programming’ni haqiqiy sharoitida mashq qilishni xohlasangiz — ideal. 6.AtCoder — Yapon platformasi, tartibli va yaxshi tuzilgan musobaqalar. Ayniqsa algoritmik masalalarni tanaffussiz yechish uchun foydali. 7.SPOJ — klassik masalalar arxivi, resurslarni tejab ishlashni ham o‘rgatadi. 8. CodeSignal — intervyu uslubidagi masalalar va baholash tizimi. Ishga kirish yoki intervyuga tayyorlanayotganlar uchun qulay. 9. Exercism — tilga yo‘naltirilgan mashqlar (Python, JS, Ruby…). Kod yozish amaliyoti va mentor fikrini olish imkoni bor — yangi til yoki stil o‘rganish uchun ayni muddao. 10.TopCoder — an’anaviy competitive programming platformasi, marafonlar va Single Round Match’lar (SRM). Qiyin masalalarga duch kelishni istaganlarga. 11.Brilliant — mantiq, matematik fikrlash va algoritmlarni vizual hamda interaktiv tarzda o‘rgatadi. Tez tushunish va konseptual bilimlarni mustahkamlash uchun ajoyib. 12. CodinGame — o‘yin shaklida kod yozib yechiladigan masalalar. Algoritmni vizualizatsiya qilmoqchi bo‘lsangiz yoki dam olish bilan o‘rganmoqchi bo‘lsangiz — super. 13. AoPS (Art of Problem Solving) — (AoPS ayniqsa) matematika mantiqi va olimpiyadalar uchun. Raqamli mantiq va kombinatorika qobiliyatini oshirishga yordam beradi. 14.InterviewBit — intervyu savollari va o‘quv yo‘li. LeetCode bilan parallel intervyu tayyorgarligi uchun foydali. 15. Kaggle — agar ma’lumotlar tahlili va mashinani o‘rganish sohasiga qiziqsangiz, real dataset’lar va mashqlar orqali fikrlashni chuqurlashtiradi. 16.Coderbyte — intervyu uslubidagi mashqlar to‘plami. Mening kichik maslahatlarim — Kuniga kamida 1–2 ta masala yechishga odatlaning. — Har xil platformalarni aralashtirib ishlang (masalan, bir kuni LeetCode, keyingi kuni Codeforces). — O‘z yechimlaringizni GitHub’da saqlang — bu sizga tajriba to‘plash va portfolioga qo‘shish imkonini beradi. Agar bu ro‘yxat sizga foydali bo‘lsa, do‘stlaringiz bilan ham ulashing. #programming#algorithms#coding#leetcode#hackerrank#robocontest#projecteuler#codeforces#atcoder#spoj#dasturlash @jonibek_turapov