Python 使用两个字符串替换,第一个字符串不影响第二个字符串

Python 使用两个字符串替换,第一个字符串不影响第二个字符串,python,string,Python,String,由于以下原因,可能需要执行此操作: 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[]\ 我找到的唯一解决方案是

由于以下原因,可能需要执行此操作:

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
替换
相互混淆:

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

有没有一种很好的方法可以使用两个替换项,而第一个替换项不影响第二个替换项?

您不需要替换
]

只有
'?'
'*'
'['
,由
全局转义处理

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

您不需要替换
]

只有
'?'
'*'
'['
,由
全局转义处理

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

@阿兰·弗雷:我已经阅读了你链接的问题,但我在这里明确提到,我已经找到了一个使用临时字符的解决方案,我等着找到另一个没有临时字符的解决方案。使用
glob.escape
继续你的生活。那里还有其他答案,不仅仅是带有临时字符的答案。你只需要滚动一下有一点。@Aran Frey:我已经阅读了你链接的问题,但这里我明确提到,我已经找到了一个使用临时字符的解决方案,我等着找到另一个没有临时字符的解决方案。使用
glob.escape
继续你的生活。这里还有其他答案,不仅仅是使用临时字符的答案。你必须这样做滚动一点。谢谢。在Python2.7中不可用,您认为有来自未来的导入吗?谢谢。在Python2.7中不可用,您认为有来自未来的导入吗?