Регулярно требуется преобразовать какой-либо текст в максимально совместимый текст для 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
Fat:
Name: 我当你兄弟 (2026)
Size: 12G
简介
两个黑帮大佬和他心爱的女人,度过人生中最玩命的一夜求生战。一部“时光机”的出现,令这一夜瞬间变成时空错乱的闹剧……
GD每日分享限制750G,下载限制10T,请尽量采用下载而不是转存。请勿直接点击GD网盘文件播放,谷歌网盘不是播放器。
收集整理不易,1周撤档,不喜勿扰,喜欢请点赞。
频道获取资源方法:点击下面的 Press me and click...链接,然后点击电报下面的START,便可以看到googledrive分享网址。
Link: 👉Press me and click START to get the hidden link
#googledrive
♾@gdsharing♾Telegram/电报/纸飞机的网页端:可能无法点击链接
Fat:
Name: 索命舞娘 (2026)
Size: 9.6G
简介
五个芭蕾舞者去参加比赛,却遭遇公车坠毁,被困在一家偏远旅馆中,遭遇杀身之祸,必须用自己的舞技逃脱危机。
GD每日分享限制750G,下载限制10T,请尽量采用下载而不是转存。请勿直接点击GD网盘文件播放,谷歌网盘不是播放器。
收集整理不易,1周撤档,不喜勿扰,喜欢请点赞。
频道获取资源方法:点击下面的 Press me and click...链接,然后点击电报下面的START,便可以看到googledrive分享网址。
Link: 👉Press me and click START to get the hidden link
#googledrive
♾@gdsharing♾赞/踩:可点、改、取消,每日有次数限制
Fat:
Name: 谍杀风暴 (2026)
Size: 15G
四名前西班牙特工在全球不同地点同时遇刺。西班牙国家情报中心发现,数十年前他们都在哥伦比亚参与了秘密的谢纳加行动。西班牙国家情报中心最出色的特工泽塔必须追查并保护唯一的幸存者,这将是他迄今为止最危险的全球任务。哥伦比亚顶级特工阿尔法将与泽塔并肩行动,而她似乎比他更了解谢纳加行动背后的秘密。
GD每日分享限制750G,下载限制10T,请尽量采用下载而不是转存。
收集整理不易,1周撤档,不喜勿扰,喜欢请点赞。
频道获取资源方法:点击下面的 Press me and click...链接,然后点击电报下面的START,便可以看到googledrive分享网址。
Link: 👉Press me and click START to get the hidden link
#googledrive
♾@gdsharing♾Telegram/电报/纸飞机的网页端:可能无法点击链接
Fat:
Name: 眨眼之间 (2026)
Size: 9.7G
三段跨越数千年的故事线交织交汇,映照出希望、联结与生命轮回的主题。
GD每日分享限制750G,下载限制10T,请尽量采用下载而不是转存。
收集整理不易,1周撤档,不喜勿扰,喜欢请点赞。
频道获取资源方法:点击下面的 Press me and click...链接,然后点击电报下面的START,便可以看到googledrive分享网址。
Link: 👉Press me and click START to get the hidden link
#googledrive
♾@gdsharing♾资源分享不易:欢迎点赞支持分享者
Fat:
Name: 庇护之地 (2026)
Size: 11.4G
隐居孤岛的特工界黄金王牌迈克尔·梅森(杰森·斯坦森 饰)本想就此隔绝过往,一场风暴却让他救下少女杰茜(博德希·蕾·布里纳希 饰),命运的齿轮彻底反转……他们的行踪不慎暴露在严密的监控网络之下,神秘势力的追杀接踵而至,无路可退的梅森被迫重操旧业,携手少女开启生死突围之路。 面对顶尖特工小队和冷血杀手的轮番围剿,梅森一路火力全开:近身肉搏、飞车追逃、枪林弹雨,硬核爽战全程高能!随着追杀不断升级,层层阴谋被逐一揭开,互相防备的两人成为彼此唯一的依靠。当滔天阴谋席卷而来,他们能否冲破死局?这份绝境中的守护,又会成为铠甲还是软肋?
GD每日分享限制750G,下载限制10T,请尽量采用下载而不是转存。
收集整理不易,1周撤档,不喜勿扰,喜欢请点赞。
频道获取资源方法:点击下面的 Press me and click...链接,然后点击电报下面的START,便可以看到googledrive分享网址。
Link: 👉Press me and click START to get the hidden link
#googledrive
♾@gdsharing♾Google Drive限制了日分享流量:求补链
Fat:
Name: 2025年12月日本有码精选01部分
Size: 49G
2025年12月日本有码上新01部分8部(可能会陆续减少,因为谷歌在标识违规文件),都是高清1080P无水印视频。参演女优请自查文件名上的番号,这是25年12月第01部分。
纯手工整理,确保每部都没有二次压制广告水印,全部是高清1080P片源。
GD每日分享限制750G,下载限制10T,请尽量采用下载而不是转存。
收集整理不易,1周撤档,不喜勿扰,喜欢请点赞。
频道获取资源方法:点击下面的 Press me and click...链接,然后点击电报下面的START,便可以看到googledrive分享网址。
Link: 👉Press me and click START to get the hidden link
#googledrive
♾@gdsharing♾赞/踩:可点、改、取消,每日有次数限制
Fat:
Name: 电子书:暗访十年、白鹿原、边水往事
Size: 18.7MB
暗访十年:作者李幺傻,以暗访记者的身份行走江湖十余年,被《中国新闻出版报》评为“中国最勇敢的作家”,熟悉各种江湖骗局和行业潜规则,所著《暗访十年》(1-5)揭秘了社会上种种隐秘骗局和潜规则。
白鹿原:为陈忠实所著小说,于1992年在《当代》杂志开始连载,1993年6月由人民文学出版社出版。描写西安东郊白鹿原上“白鹿村”的白姓和鹿姓人家50年的恩怨纠葛,是一部现实主义色彩的小说,被改编成同名电影、话剧、舞剧、秦腔等多种艺术形式。1997年荣获第四届茅盾文学奖。
边水往事:作者:沈星星,简介:2009年,沈星星被迫踏上金三角的土地,成了一名给毒贩送假货的卡车司机。整整397天,他跟毒贩、赌徒、缅甸黑社会生活在一起。
频道获取资源方法:如果看不到googledrive分享链接,点击下方 Press me and click...这行字,然后点击电报下方start就可以看到了。
Link: 👉Press me and click START to get the hidden link
#googledrive
♾@gdsharing♾赞/踩:可点、改、取消,每日有次数限制