我有一个像
a = "X1+X2*X3*X1"
b = {"X1":"XX0","X2":"XX1","X0":"XX2"}
我想使用 dict b 替换子字符串 'X1,X2,X3'。但是,当我使用下面的代码替换时,
for x in b:
a = a.replace(x,b[x])
print(a)
'XXX2+XX1*X3'
预期结果是
XX0 + XX1*X3*XX0
我知道这是因为在循环中替换了子字符串,但我不知道如何解决。
最佳答案
您可以使用 '|'
创建图案然后在字典转换中搜索,如下所示。
尝试这个:
import re
a = "X1+X2*X3*X1"
b = {"X1":"XX0","X2":"XX1","X0":"XX2"}
pattern = re.compile("|".join(b.keys()))
out = pattern.sub(lambda x: b[re.escape(x.group(0))], a)
输出:>>> out
'XX0+XX1*X3*XX0'
关于python - 如何同时替换多个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69451227/