Python 正则表达式:如何用不同的值替换每个匹配项?

12 投票
4 回答
2513 浏览
提问于 2025-04-17 01:20

假设我有这样一个字符串:

s = "blah blah blah"

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

4 个回答

2

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

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

替换操作会生成"%s %s %s",然后你可以使用格式化操作符。

13

你可以使用 re.sub 这个功能,它可以接受一个字符串或者一个函数,然后把这个字符串或函数应用到每一个匹配的地方:

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

你可以使用一个叫做 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))

这样会得到

1 2 3

撰写回答