什麼是從文件名中移除特殊字符列表的有效方法?我想用''替換'空格'。與 '_'。我可以做一個,但我不知道如何重命名多個字符。用python中的特殊字符列表重命名文件
import os
import sys
files = os.listdir(os.getcwd())
for f in files:
os.rename(f, f.replace(' ', '.'))
什麼是從文件名中移除特殊字符列表的有效方法?我想用''替換'空格'。與 '_'。我可以做一個,但我不知道如何重命名多個字符。用python中的特殊字符列表重命名文件
import os
import sys
files = os.listdir(os.getcwd())
for f in files:
os.rename(f, f.replace(' ', '.'))
您可以爲循環,檢查文件名的每個字符和替換做:
import os
files = os.listdir(os.getcwd())
under_score = ['(',')','[',']'] #Anything to be replaced with '_' put in this list.
dot = [' '] #Anything to be replaced with '.' put in this list.
for f in files:
copy_f = f
for char in copy_f:
if (char in dot): copy_f = copy_f.replace(char, '.')
if (char in under_score): copy_f = copy_f.replace(char,'_')
os.rename(f,copy_f)
與此招是第二個for循環運行LEN(copy_f)時間,這將當然更換符合標準:) 也所有字符,沒有必要爲這個進口:
import sys
該解決方案有效;如果你要求效率是爲了避免O(n^2)行爲的時間複雜性,那麼這應該是確定的。
import os
files = os.listdir(os.getcwd())
use_dots = set([' '])
use_underbar = set([')', '(', '[', ']'])
for file in files:
tmp = []
for char in file:
if char in use_dots:
tmp.append('.')
elif char in use_underbar: #You added an s here
tmp.append('_')
else:
tmp.append(char)
new_file_name = ''.join(tmp)
os.rename(file, new_file_name)
如果您開始使用bytearray,則可以提高此效率;這將避免'tmp'列表,並創建一個新的字符串與隨後的連接。
看看:http://stackoverflow.com/questions/3411771/multiple-character-replace-with-python(和其他人) – Stidgeon
http://stackoverflow.com/questions/16720541/python-string- replace-regular-expression將指向're.sub',這將允許您使用正則表達式。 – SteveTurczyn