2011-03-26 57 views
0

我想保存一个文件,其名称的最有效的字符保持不变,f.e.如果我被提供的文件名:如何删除不安全的字符来保存文件

>This\ Ăwesomé_Song?©.mp3

,我想将它保存Windows 7下,它不会让我去救它,直到我删除>\?。字符Ă©é是完全正常的,我想保持它们完好无损(而不是通过一个ASCII筛选器运行一切)。

我不知道哪些字符是允许的f.e.根据Unix之类的,但我希望它工作平台独立。我会解决这个问题的方式是实现一个字符串列表,每个字符串都包含一个字符类,从最恶毒(fe ?)到最无害(fe字母a)排序,然后逐字串敲出来,直到我得到我可以保存的文件名。

语言为Python,谢谢!

+1

http://stackoverflow.com/questions/295135/turn-a-string-into-a-valid-filename-in-python是一个非常类似的问题。看看 – DTing 2011-03-26 19:53:55

回答

7
>>> import re 
>>> print re.sub(r'[\\/:"*?<>|]+', "", "This\ Ăwesomé_Song?©.mp3") 
This Ăwesomé_Song©.mp3 
>>> 
+0

我能够很容易地适应Groovy的这个解决方案(并且为我自己的需要处理一些额外的字符): filename = filename.replaceAll(〜/ [\\ /:“*?<> |#,] +/' - ') – kjl 2012-05-23 22:28:31

1

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

+0

有趣,谢谢! – Kami 2011-03-26 21:45:24

0

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

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

然后就是手动检查文件名。

相关问题