How to remove unsafe characters to save file
我想保存一个文件,文件名的有效字符保持不变,例如,如果我得到文件名:
>This\ ?wesomé_Song??.mp3
我想把它保存在Windows 7下,直到我取出>、\和?之后,它才允许我保存它。字符?、?和é是完全正确的,我希望它们保持完整(而不是通过ASCII过滤器运行所有内容)。
我不知道在Unix等下允许哪些字符,但我希望它独立工作。我解决这个问题的方法是,实现一个字符串列表,每个字符串包含一类字符,从最恶毒的(f.e.?)到最无害的(f.e.字母a),然后一个字符串一个字符串地删除它们,直到得到一个我可以保存的文件名。
语言是Python,谢谢!
- stackoverflow.com/questions/295135/…是一个非常类似的问题。看一看
1 2 3 4
| >>> import re
>>> print re.sub(r'[\\/:"*?<>|]+',"","This\ ?wesomé_Song??.mp3")
This ?wesomé_Song?.mp3
>>> |
- 我可以很容易地将这个解决方案适应于groovy(并根据自己的需要处理一些额外的字符):filename=filename.replaceall(~/[/:"*?<>α,[+/,'-′]
在posix中,只保留两个八位字节:正斜杠(/、0x2f、dec 42)和空(\0、0x00、dec 0)。任何其他字符都可以出现在文件名中。
您可以使用此问题中的模式列出所有有效字符:
1 2
| >>> import string
>>> valid_chars ="-_.() %s%s" % (string.ascii_letters, string.digits) |
然后手动检查文件名。