将字符串转换为有效的文件名?

发布于 2021-01-29 17:12:12

我有一个要用作文件名的字符串,因此我想使用Python删除文件名中不允许的所有字符。

我宁愿严格一点,所以假设我只保留字母,数字和一小部分其他字符,例如"_-.() "。什么是最优雅的解决方案?

文件名在多个操作系统(Windows,Linux和Mac OS)上必须有效-这是我库中的MP3文件,歌曲名称为文件名,并且在3台计算机之间共享和备份。

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以查看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
    

    还有更多,但我不予赘述,因为它不解决节段化,而是逃脱。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看