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

zer*_*lus 10 python regex

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

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

unu*_*tbu 19

你可以使用re.sub回调:

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))
Run Code Online (Sandbox Code Playgroud)

产量

1 2 3
Run Code Online (Sandbox Code Playgroud)


zee*_*kay 11

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

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