如何替换一个字符串的多个子字符串? [英] How to replace multiple substrings of a string?

查看:58
本文介绍了如何替换一个字符串的多个子字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我现在有

string.replace("condition1", "")

但是想要一些类似的东西

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

虽然这感觉不是很好的语法

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

解决方案

这里有一个简短的例子,可以用正则表达式来解决这个问题:

导入重新rep = {"condition1": "", "condition2": "text"} # 在这里定义所需的替换# 用这三行做替换rep = dict((re.escape(k), v) for k, v in rep.iteritems())#Python 3 将 dict.iteritems 重命名为 dict.items 所以最新版本使用 rep.items()模式 = 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--")'() 和 --text--'

I would like to use the .replace function to replace multiple strings.

I currently have

string.replace("condition1", "")

but would like to have something like

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

although that does not feel like good syntax

what is the proper way to do this? kind of like how in grep/regex you can do \1 and \2 to replace fields to certain search strings

解决方案

Here is a short example that should do the trick with regular expressions:

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()) 
#Python 3 renamed dict.iteritems to dict.items so use rep.items() for latest versions
pattern = re.compile("|".join(rep.keys()))
text = pattern.sub(lambda m: rep[re.escape(m.group(0))], text)

For example:

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

这篇关于如何替换一个字符串的多个子字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆