有没有办法在我的搜索和替换代码中内置异常?

时间:2019-07-12 19:10:47

标签: python

我需要删除文件名中的下划线,但不要删除所有下划线。

原始文件:“ 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))

2 个答案:

答案 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