• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

如何使用不同字符串分别替换一个字符串中的多个子字符串? ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

我想使用.replace函数来替换多个字符串。

我现在有

string.replace("condition1", "")

但想要有类似下面这样多次替换的东西

string.replace("condition1", "").replace("condition2", "text")

虽然这不觉得好的语法

什么是正确的方法来做到这一点?有点像在grep /regex中你可以做\1\2来替换字段到某些搜索字符串

最佳解决方法

这里是一个简短的例子,应该用正则表达式来实现:

import re

rep = {"condition1": "", "condition2": "text"} # define desired replacements here

# use these three lines to do the replacement
rep = dict((re.escape(k), v) for k, v in rep.iteritems())
pattern = re.compile("|".join(rep.keys()))
text = pattern.sub(lambda m: rep[re.escape(m.group(0))], text)

例如:

>>> pattern.sub(lambda m: rep[re.escape(m.group(0))], "(condition1) and --condition2--")
'() and --text--'

次佳解决方法

你可以做一个漂亮的小循环函数。

def replace_all(text, dic):
    for i, j in dic.iteritems():
        text = text.replace(i, j)
    return text

其中text是完整的字符串,dic是一个字典 – 每个定义是一个字符串,将替换匹配的术语。

注意:在Python 3中,iteritems()已被替换为items()

小心:请注意,这个答案要求:

  • 替换是顺序无关的

  • 每次替换都可以更改以前替换的结果

这是因为python字典没有可靠的迭代顺序。

例如,如果一本字典有:

{ "cat": "dog", "dog": "pig"}

和字符串是:

"This is my cat and this is my dog."

我们不一定知道首先使用哪个字典条目,结果是:

"This is my pig and this is my pig."

或者

"This is my dog and this is my pig."

记住text字符串有多大以及字典中有多少对是有效的。

第三种解决方法

这是使用reduce的第一个解决方案的一个变体,如果你喜欢函数式编程。


鲜花

握手

雷人

路过

鸡蛋
专题导读
上一篇:
在Java中,如何将字符串转换为JSONObject发布时间:2022-05-14
下一篇:
在Windows上,如何在Anaconda Python中安装Keras和Theano?发布时间:2022-05-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap