Python正则表达式:如何用不同的值替换事件的每个实例?

时间:2011-09-03 14:36:46

标签: python regex

假设我有这个字符串: s = "blah blah blah"

使用Python正则表达式,如何用不同的值替换“blah”的每个实例(例如,我有一个值列表v = ("1", "2", "3")

4 个答案:

答案 0 :(得分:19)

您可以使用re.sub callback

import re
def callback(match):
    return next(callback.v)
callback.v=iter(('1','2','3'))

s = "blah blah blah"
print(re.sub(r'blah',callback,s))

产量

1 2 3

答案 1 :(得分:11)

你可以使用re.sub,它接受​​一个字符串或函数并将其应用于每个匹配:

>>> re.sub('blah', lambda m, i=iter('123'): next(i), 'blah blah blah')
<<< '1 2 3'

答案 2 :(得分:2)

在这种情况下,您不需要正则表达式:

s.replace("blah","%s")%v

替换产生“%s%s%s”,然后使用格式运算符

答案 3 :(得分:2)

我认为你真的不需要正则表达式。

for x in v:
  s = s.replace('blah', x, 1)

但是如果你真的想要一个正则表达式:

import re
for x in v:
  s = re.sub('blah', x, s, count=1)