关于python:如何删除不安全字符以保存文件

How to remove unsafe characters to save file

本问题已经有最佳答案,请猛点这里访问。

我想保存一个文件,文件名的有效字符保持不变,例如,如果我得到文件名:

>This\ ?wesomé_Song??.mp3

我想把它保存在Windows 7下,直到我取出>\?之后,它才允许我保存它。字符??é是完全正确的,我希望它们保持完整(而不是通过ASCII过滤器运行所有内容)。

我不知道在Unix等下允许哪些字符,但我希望它独立工作。我解决这个问题的方法是,实现一个字符串列表,每个字符串包含一类字符,从最恶毒的(f.e.?)到最无害的(f.e.字母a),然后一个字符串一个字符串地删除它们,直到得到一个我可以保存的文件名。

语言是Python,谢谢!


1
2
3
4
>>> import re
>>> print re.sub(r'[\\/:"*?<>|]+',"","This\ ?wesomé_Song??.mp3")
This ?wesomé_Song?.mp3
>>>


在posix中,只保留两个八位字节:正斜杠(/、0x2f、dec 42)和空(\0、0x00、dec 0)。任何其他字符都可以出现在文件名中。


您可以使用此问题中的模式列出所有有效字符:

1
2
>>> import string
>>> valid_chars ="-_.() %s%s" % (string.ascii_letters, string.digits)

然后手动检查文件名。