Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Единый транспортно-логистический оператор Узбекистана 🇺🇿
Задачу по созданию такого оператора поставила правительственная комиссия во главе с вице-премьер министром Жамшидом Ходжаевым
Как считают власти, такой проект позволит снизить логистические затраты на 30% и усовершенствовать внешнеторговую логистику🚚🏘️🚂
#LOGISTICS#UZBEKISTAN
🌍 Every year, about 25 million shipping containers are moved over the world’s oceans. These box-shaped units revolutionized transport geography by making global trade faster and more efficient. ✨
#transport⚡#logistics⚡#shipping⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
Дефицит складов в Казахстане🇰🇿
Нехватка складов в ЦА продолжается, например в Казахстане остался 1% свободных площадей, а ставки за кв.м "бьют рекорды"
По оценкам NF Group, в ближайшие два года в Казахстане девелоперы введут в эксплуатацию меньше новых складов — всего 102 тыс. кв. м, тогда как объем спроса в 2023-2025 годах достигнет 700 тыс. кв. м. 📈
#LOGISTICS#KAZAKHSTAN
🇰🇿⛴🇪🇺 Казахстан готов передать порты на Каспии под управление компаний из ЕС
Министр транспорта Казахстана Марат Карабаев и еврокомиссар по транспорту Адина Вэлян рассмотрели вопросы, касающиеся передачи портов Актау и Курык в доверительное управление на условиях ship-or-pay
Ранее Марат Карабаев заявлял о передачи оставшихся 22 аэропортов Казахстана под управления европейских инвесторов.
Напомним, что аэропорты Алматы и Астаны уже находятся под управлениями зарубежными компаниями.
Таким образом, все крупнейшие логистические узлы Казахстана будут в "руках" зарубежных инвесторов, конечно если правительству Казахстана удастся договориться.
#LOGISTICS#KAZAKHSTAN
CDEK открыл 2 новых фулфилмент центра в Казахстане 🇰🇿
Два новых склада фулфилмента открылось в Астане и в Алматы. Они позволят увеличить количество собранных и обработанных заказов в стране минимум в пять раз.
На сегодняшний день в Казахстане работали два склада фулфилмента СДЭК. Новый комплекс в Алматы рассчитан на объемы до 1000 заказов в сутки, а в Астане — до 1500 заказов в день.
#LOGISTICS#KAZAKHSTAN
Логистика Казахстана 2024🇰🇿
Конец года и все подводят итоги, а это значит, что выходит много интересных интервью 🎤
А про логистику Казахстана всегда интересно слушать, читать и наблюдать👀
Во вложении интервью от LogiStan и от Марата Шибутова
#LOGISTICS#KAZAKHSTAN #2023
Бизнес дайджест от Chinaccelerator 06/10/2021
1. China’s carbon neutral goal: Shanghai aims to have 10,000 h
2. Alibaba Cloud offers to build livestream shopping platforms for global clients
3. Tencent to reposition short-video app Weishi to focus on movie content
4. Food delivery giant Metiruan plans to hire 60,000 execs
5. China’s Oriental Space secures funding from Matrix, Sequoia, others
6. BukuWarung, a fintech for Indonesian MSMEs, scores $60M Series A led by Valar and Goodwater
7. Indian startup funding falls 57% to $1.8b in May amid second COVID19 wave
8. Refyne raises $20.1 million to help workers in India get faster access to wages
9. SG fintech firm MatchMove raises $100m from Nityo Infotech
10. Shopee expands in Latin America with silent launches in Chile, Colombia
11. European Tesla rival Northvolt raises $2.75 billion from Goldman, VW and others
Check out all 47 tech-related news articles covering #gaming#fooddelivery#logistics, etc, at https://chinaccelerator.com/news-posts/chinaccelerator-daily-digest-06-10-2021/ You can find the original articles' links there.
Вчера провели вебинар, посвященный использованию LOGAREON WMS по модели On-Premise.
Продемонстрировали работу мультитенанта, модуль BI и подсистему WCS, ответили на самые волнующие вопросы.
#wms#logareon#Logistics#wcs
https://youtu.be/8qvo9W4mLek?si=HQ-jaKUz9XMgLwP1
⚡️⚡️⚡️
Для наших любимых заказчиков записали видеоинструкцию по самостоятельной настройке и выполнению операций входящего потока в #самойлучшейWMS
❤️❤️❤️
Верим, что, имея доступ к такой простой и понятной инструкции, настроить систему в какой-то перспективе будет легче, чем научить медведя🐻 кататься на велосипеде🚴♂️😄
#logareon#Logistics#WMS #
https://dzen.ru/video/watch/65708abc6aba5b2d76d4e650?share_to=link
Safe Air Transport (SAT) ✈️🇳🇬🇷🇺
Abuja to Moscow
6th September 2024
Lagos to Moscow
30th of September 2024
Students/VIP with advance booking enjoy special rates of up to 40% discount
Use "SAT" to get the best deal on cargo transportation and flight bookings from Nigeria to Russia, from Russia to Nigeria and between various cities in Russia.
+79262385618
https://t.me/nido_russia/1784
#sat#logistics#waybill
Safe Air Transport (SAT)✈️🇳🇬🇷🇺
Abuja to Moscow
5th of September 2024
Lagos to Moscow
5th of September 2024
Students/VIP with advance booking enjoy special rates of up to 40% discount
Use "SAT" to get the best deal on cargo transportation and flight bookings from Nigeria to Russia, from Russia to Nigeria and between various cities in Russia.
+79262385618
https://t.me/nido_russia/1782
#sat#logistics#waybill
Safe Air Transport (SAT) ✈️🇳🇬🇷🇺
Abuja to Moscow
2nd September 2024
Lagos to Moscow
5th of September 2024
Students/VIP with advance booking enjoy special rates of up to 40% discount
Use "SAT" to get the best deal on cargo transportation and flight bookings from Nigeria to Russia, from Russia to Nigeria and between various cities in Russia.
+79262385618
https://t.me/nido_russia/1782
#sat#logistics#waybill