2011-03-26 86 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) 

然後就是手動檢查文件名。

相關問題