Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Шли третьи сутки некорректной работы (вернее отсутствия работы) сайта #OLX
На самом сайте: ни слова, никаких официальніх пресс-релизов...
Офигенный сервис и уровень поддержки.
Просто гениально...
Ну если вас атакуют, уволили админа и забыли заплатить ему зарплату, скажите людям хоть что-нибудь!!!
Или вы сами уже утратили доступ к своему же ресурсу?!
Кстати - в Польше и Казахстане #OLX тоже не работает.
Что случилось с #OLX?
Уже сутки не работает переписка в профилях, сам ресурс вроде как сам работает, объявления на месте, но зайти в профиль или написать продавцу, ответить покупателю - невозможно. Выдает ошибку.
Что происходит?
Атака хакеров?
Все админы уехали?
Вызываю пояснительную бригаду.
Olx'da mahsulotni reklama qilishdan tashqari oʻz xizmatlaringizni tavsiya qilishingiz yoki sotishingiz ham mumkin.
Aytgancha, saviyali auditoriya olx'da mavjud deb hisoblamayman va u yerda koʻplab, firibgarlik holatlari ham tez-tez uchrab turadi. Xushyor boʻlish kerak)
P.s. Kurslar reklamasi ham olx'da faol ekan, bu ham sotuvga yaxshi usul.
— Sizchi olx'da xizmatlaringizni tavsiya qilib koʻrmadingizmi?
@suxrobblog | #olx#mijoz
⚡️Как обезопасить себя от мошенничества на онлайн-сервисе объявлений «OLX.kz»?
«OLX.kz» является крупнейшим интернет-сервисом для размещения онлайн-объявлений в Казахстане, с помощью которого многие пользователи привыкли находить продавцов или покупателей различных товаров или услуг. Поэтому мошенники используют продуманные схемы для незаконного обогащения путем использования данного портала. При этом объектами их мошеннических действий могут быть как продавцы (люди, размещающие объявления), так и покупатели.
Чтобы заключить безопасную сделку и не стать жертвой обмана, придерживайтесь следующих рекомендаций:
📌Старайтесь вести переписку в чате онлайн-сервиса и не переходите по сторонним ссылкам.
Мошенники создают ложные сайты-двойники, похожие на официальную веб-страницу «OLX.kz». Поэтому обязательно обращайте внимание на название ссылок сайта, на котором вы находитесь, и проверяйте их подлинность.
✅Реальный и официальный домен сайта «OLX.kz» выглядит так:
версия онлайн-сервиса для компьютера – olx.kz;
мобильная версия – m.olx.kz;
центр поддержки пользователей – help.olx.kz;
бизнес-страница – name.olx.kz.
❌ Примеры ложных сайтов-двойников: olxkz.info, olx-send.kz, olx-kz.info, m.olx.kz.obyava.com, olxkz-pays.online, olxkz.icu, www-m-olx.kz и так далее.
📌Не вводите данные своих банковских карт.
Портал «OLX.kz» не имеет функции, с помощью которой человек, размещающий объявление, может получить на свой счет денежные средства за реализованный товар или услугу. Онлайн-сервис не запрашивает личные данные пользователей, а также данные их банковских карт.
Обычно мошенники создают сайт-двойник со страницами, где требуется ввести данные карты, чтобы пользователь мог получить оплату за товар или услугу. Иногда злоумышленники просят отключить лимиты для снятия и перевода денежных средств с банковской карты.
📌 Не соглашайтесь на предложения с доставкой товара.
Сервис «OLX.kz» не предоставляет услуги курьеров по доставке товаров. Поэтому мошенников можно распознать по попыткам предоставления подобных услуг. Злоумышленники будут предлагать выкупить товар и воспользоваться услугой доставщиков. Мы рекомендуем оплачивать товар или услугу после их получения при личных встречах участников сделки.
📌 Не вносите предоплату за товар или услугу.
Мошенники копируют объявления настоящих продавцов и размещают поддельные объявления с заниженными ценами для привлечения покупателей. Затем злоумышленники просят предоплату у заинтересованных товаром пользователей. После перевода средств и жалоб покупателей по поводу отсутствия товара, мошенники направляют своих жертв к онлайн-объявлению настоящего продавца (который, разумеется, понятия не имеет, чего эти люди от него хотят). При этом злоумышленники удаляют свои поддельные объявления.
📌 Обращайте внимание на текст сообщений от Службы поддержки сервиса.
Мошенники могут отправлять письма от имени менеджеров Службы поддержки для убеждения пользователей в безопасности проводимых ими действий. Это помогает злоумышленникам реализовывать указанные выше мошеннические схемы. К примеру, в таких письмах может содержаться информация с подтверждением или инструкцией, как воспользоваться услугой доставки или получить денежные средства за реализованный товар или услугу.
Дорогие подписчики, будьте внимательны и сохраняйте бдительность. Желаем удачных и безопасных сделок!
@aqparatsaqsysy - народная информационная дружина
#OLX#мошенники#мошенничество#мошенническиесхемы
⚡️Мошенники против продавцов на olх.kz , krisha.kz и kolesa.kz
Аферисты начинают беседу с хозяевами онлайн-объявлений и в итоге входят в их доверие с целью получения денежных средств на банковском счете.
📲 Злоумышленники звонят продавцам с сайтов olх.kz, krisha.kz, kolesa.kz и сообщают, что якобы хотят купить товар, квартиру, машину из онлайн-объявлений. Они говорят, что сразу переведут деньги за товар (если сумма большая, то в качестве задатка).
💬 Параллельно с этим мошенники заходят в приложение kaspi.kz, вводят номер телефона продавца и нажимают кнопку «забыли пароль». После этого собеседнику афериста приходит новый код доступа к банковскому приложению на телефон.
❗️Мошенник во время звонка просит не отключаться и быстро назвать код, который поступил во время разговора продавцу (якобы для подтверждения перевода). В суматохе человек сообщает код злоумышленнику и лишается денег на всех счетах в Kaspi банке.
👵🏼 Несмотря на то, что в СМС-сообщении всегда написано «никому не сообщайте код», многие люди из-за суеты или еще из-за чего-нибудь все равно сообщают его мошенникам. Особенно часто это делают люди в возрасте.
❌ Поэтому еще раз напоминаем, если в сообщении от банка написано «код не сообщать», то код никому не говорим.
✅ Сообщать код можно только тем людям, которые указаны в сообщении, например, «сообщите код менеджеру или кассиру». Обычно это сотрудники банков либо каких-либо крупных магазинов (код нужен для подтверждения списания бонусов).
🤲🏻 Удачных и безопасных продаж и покупок вам, дорогие подписчики.
✅ Подписывайтесь на телеграм-канал @aqparatsaqsysy и будьте информационно грамотными!
⤵️ Здесь наш канал в Instagram:
👉🏻🔗👈🏻
#мошенники#мошенничество#мошенническиесхемы#смстзбанка#продажа#онлайнобъявления#olx#крыша#колеса