python - 如何同时替换多个子字符串
问题描述
我有一个字符串
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'
推荐阅读
- sql - 如何在一个查询中选择以下数据
- asp.net - ASP.NET 用户控件和网格视图
- javascript - 来自 for 循环的值在 Javascript 中不时显示为 NaN
- javascript - 在mongodb中对多个文档进行分组
- javascript - JavaScript 更新多个对象属性
- json - 从 Kafka 读取时,Spark 流式处理是否单独处理每个 JSON“事件”?
- excel - Power Pivot 中的相关数据模型
- python - gensim TfidfModel 的默认 smartirs 是什么?
- java - 如何在 jboss-eap-6.4 中禁用 ssl 并仅使用 tlsv1.2
- php - Bitbucket 管道添加额外的 php 扩展