将字符串转换为有效的文件名?
我有一个要用作文件名的字符串,因此我想使用Python删除文件名中不允许的所有字符。
我宁愿严格一点,所以假设我只保留字母,数字和一小部分其他字符,例如"_-.() "
。什么是最优雅的解决方案?
文件名在多个操作系统(Windows,Linux和Mac OS)上必须有效-这是我库中的MP3文件,歌曲名称为文件名,并且在3台计算机之间共享和备份。
-
您可以查看Django框架,了解它们如何从任意文本创建“子弹”。slug是URL和文件名友好的。
Django文本工具定义了一个函数,
slugify()
这可能是此类事物的黄金标准。本质上,它们的代码如下。def slugify(value): """ Normalizes string, converts to lowercase, removes non-alpha characters, and converts spaces to hyphens. """ import unicodedata value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore') value = unicode(re.sub('[^\w\s-]', '', value).strip().lower()) value = unicode(re.sub('[-\s]+', '-', value)) # ... return value
还有更多,但我不予赘述,因为它不解决节段化,而是逃脱。