首页 > 解决方案 > 使用 2 个字符串替换,而第一个对第二个没有影响

问题描述

由于这个答案,可能有必要这样做:

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[]]\

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

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

有没有一种很好的方法来使用 2 个替换而不是第一个对第二个有影响?

标签: pythonstring

解决方案


你不需要更换].

要替换的特殊字符只有'?', '*','['和 由 处理glob.escape

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

推荐阅读