我想用第三个替换两个可选字符串,即我希望能够做到:
string.replace(a or b, c)
是的,我可以在预定义的列表上循环,或者我也可以使用两个replace
命令。我只是想知道是否有任何我不知道的可用的东西。
示例
我有一个这样的字符串:
'foo bar baz'
我想用'yay'代替'foo',用'yay'代替'bar'来获得:
'yay yay baz'
我可以很容易地做到:
'foo bar baz'.replace('foo', 'yay').replace('bar', 'yay')
但这有点重复。我在想是否有任何巧妙的方法(可能是某些扩展字符串函数的库中的一些深奥的函数......我不知道......)
答案 0 :(得分:5)
您忘记了re
解决方案:
import re
a = "hello world"
print re.sub("hello|world", "foo", a) # "foo foo"
答案 1 :(得分:5)
import re
re.sub("a|b", "c", str)
e.g。
re.sub("foo|bar", "yay", "foo bar baz")
答案 2 :(得分:1)
我认为正则表达式最好。但是这里是蹩脚的纯蟒蛇版本,为了完整起见..
>>> reduce(lambda x,y: x.replace(y, 'yay'), ('foo', 'bar'), 'foo bar baz')
'yay yay baz'
由于lambda
,这不是非常pythonic。但你可以用:
扩展字符串函数的某些库的一些深奥的函数
这可能看起来像这样:
>>> from string import replace
>>> from functools import partial
>>> function = partial(replace, new='yay')
>>> reduce(function, ('foo', 'bar'), 'foo bar baz')
'yay yay baz'
功能编程人员可能喜欢它,但大多数人更喜欢我认为的正则表达式。
答案 3 :(得分:0)
re.sub(r'abc|def', 'xyz', 'abc def')
'xyz xyz'
你可以使用re.sub