python - 如何同时替换多个子字符串

标签 python substring

我有一个像

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/

相关文章:

python - EKS作为字符串记录到CloudWatch流

python - 如何使用 python 和 REST 编写查询以从 JIRA 检索数据

java - StringBuilder方法deleteCharAt不删除字符

java - 如何在Python中影响内循环的外循环变量?

python - 如何注释掉 Linux 配置文件中的多行?

python - 为什么人们说 "Don' t 使用 place()”?

java - java中的字符串截断

string - 如何在 Swift 中返回所有子字符串(不止一次)?

java - 如何将单位未知的字符串作为称重对象进行处理

sql-server - 使用子字符串在 SQL Server 中获取正确数量的值