我需要删除文件名中的下划线,但不要删除所有下划线。
原始文件:“ Bob's_House_RZ.png”,“ Jim_and_Judy's_House_RR.png”
所需结果:“鲍勃的房子_RZ.png”,“吉姆和朱迪的_House_RR.png”
我已经写了一些代码来替换字符,但是我想知道如何为某些模式(例如上面的“ _RR”和“ _RZ”)添加例外。由于我是编程新手,所以我想知道最佳实践是什么。感谢您的帮助。
import os
target_dir = r"C:\Somefolder\\"
old_string = "_"
new_string = " "
extension = ".png"
count = 0
for file in os.listdir(target_dir):
if file.endswith(extension):
if file.find(old_string) > 0:
count += 1
os.rename(target_dir + "\\" + file, target_dir + "\\" + file.replace(old_string, new_string))
答案 0 :(得分:0)
通常,当您尝试在字符串中定位模式时,RegEx函数在许多语言中都是不错的选择。您可以详细了解here
答案 1 :(得分:0)
使用短正则表达式模式:
import re
extension = ".png"
# for demonstration purpose
files = ["Bob's_House_RZ.png", "Jim_and_Judy's_House_RR.png"]
pat = re.compile(r'_(?!(R[RZ]\b))')
for f in files:
if f.endswith(extension):
new_fname = pat.sub(' ', f)
print(new_fname)
# do the renaming logic
输出:
Bob's House_RZ.png
Jim and Judy's House_RR.png