使用2个字符串替换而不对第二个字符串有效

时间:2018-05-04 23:51:17

标签: python string

由于this answer,可能需要执行此操作:

path = r"D:\Temp\abc[def]\            # (i have many others to process)
path = path.replace('[', '[[]').replace(']', '[]]')
# now we can use glob here with path

然而,第一个replace与第二个replace混淆,结果不符合预期,即D:\Temp\abc[[]def[]]\

我找到的唯一解决方案是使用临时字符~来避免2 replace相互混淆:

path = path.replace('[', '[[~').replace(']', '[]]').replace('~', ']')

有没有一种很好的方法可以使用2个替换而不会对第二个产生影响?

1 个答案:

答案 0 :(得分:2)

您不需要替换]

Special characters to replace仅为'?''*''[',由glob.escape处理。

>>> print(glob.escape(path))
D:\Temp\abc[[]def]\