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中不可用,您认为有来自未来的导入吗?