Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
📝Grokipedia — Ilon Mask va uning xAI kompaniyasidan yangi onlayn ensiklopediya
ℹ️ Ilon Mask uzoq vaqtdan beri “Vikipediyani” “bir tomonlama” ekanligi uchun tanqid qilib keladi va shuning uchun sun’iy intellektga asoslangan o‘z alternativasini taqdim etdi.
✍️Grokipediyadagi maqolalar foydalanuvchilar tomonidan tahrir qilinmaydi, balki Grok sun’iy intellekt modeli tomonidan yaratiladi va qo‘llab‑quvvatlanadi. Shu bilan birga, Mask Vikipediyani tanqid qilgan bo‘lsa-da, ayrim materiallar aynan undan olingan yoki moslashtirilgan; bunday sahifalarda “Wikipedia’dan moslashtirilgan” degan belgi mavjud.
📊 Hozircha Grokipediya faqat ingliz tilida 885 000 maqolaga ega, Vikipediyada esa taxminan 7 million inglizcha maqola mavjud. Shuningdek, Mask ensiklopediyasida hozircha rasm yo‘q.
💡 Loyiha darhol ishonchlilik va mustaqillik bo‘yicha savollarni keltirib chiqardi: tanqidchilar tahrirlash tizimi shaffof emasligini va ayrim maqolalar bahsli nuqtai nazarlarni aks ettirayotganini ta’kidlashmoqda.
✅ Grokipedia barcha foydalanuvchilar uchun butunlay bepul ochiq, ammo hozircha faqat beta-versiya v0.1 sifatida mavjud.
➡️#ilonmask#grokipedia | Birinchi raqamli IT-Blog
Grokipedia in the article "Independence Day (Uzbekistan)" referred to my material.
https://grokipedia.com/page/Independence_Day_(Uzbekistan)
#Grokipedia#Uzbekistan#IndependenceDay
🌐Илон Маск создал альтернативу Википедии - Grokipedia
27 октября Илон Маск объявил о запуске Grokipeдии - собственной версии интернет-энциклопедии, основанной на технологиях его компании xAI, разработавшей нейросеть Grok.
По словам Маска, новый ресурс станет «альтернативой Википедии, свободной от пропаганды и идеологических искажений», сообщает "Русская служба Би-би-си".
⚙️ Как устроена Grokipedia
Редактирование статей в Grokipedia будет вестись не сообществом, а командой xAI.
На момент запуска на сайте заявлено около 900 тысяч статей, тогда как в Википедии почти 8 миллионов.
Проект позиционируется как «энциклопедия, управляемая искусственным интеллектом», которая, по утверждению Маска, должна «обеспечить нейтральность и точность данных».
🧠 Конфликт с Википедией
Маск уже не впервые критикует Wikimedia Foundation, обвиняя ее в идеологической ангажированности и цензуре, хотя кто знает, как с цензурой будет у него.
Создатель Википедии Джимми Уэйлс ответил, что никакая нейросеть «не способна заменить человеческое знание и консенсус экспертов».
«ИИ питается информацией, созданной людьми. Даже Грокипедии нужна Википедия, чтобы существовать», — заявила пресс-секретарь Wikimedia Лорен Дикинсон.
Согласно данным фонда, посещаемость Wikipedia.org снизилась на 8% в 2024–2025 годах в том числе из-за роста популярности чатботов и нейросетей, которые используют встраиваемые ответы на основе ее статей.
🌍Идеологический акцент
Различия между двумя платформами уже стали видны пользователям. Например, статья об изменении климата в Википедии утверждает о «почти единогласном научном консенсусе» относительно антропогенных причин глобального потепления.
В Grokipedia этот же тезис представлен в скептическом контексте:
«Критики полагают, что утверждения о научном консенсусе преувеличены из-за избирательной категоризации данных».
Таким образом, Grokipedia отражает не столько нейтральность, сколько идеологическую реакцию, попытку противопоставить традиционным источникам «альтернативную трактовку» сложных научных тем.
📌Создание Grokipedia - продолжение линии Маска на информационный суверенитет: конкуренцию с Google, OpenAI и теперь с Wikimedia.
Если Wikipedia - проект в большей степени коллективного знания, хотя и цензура и идеология там есть, то Grokipedia - проект централизованного ИИ-редактирования, где «объективность» тоже зависит, но от алгоритма и идеологии его создателя.
Для пользователей это открывает новую эпоху - войну интерпретаций, где источники данных конкурируют не за трафик, а за доверие.
___
@politus2022
#ИлонМаск#Grokipedia#Wikipedia#ИИ