在给定列表的情况下,使用 re.sub
执行替换的最佳方法是什么?例如:
import re
some_text = 'xxxxxxx@yyyyyyyyy@zzzzzzzzz@'
substitutions = ['ONE', 'TWO', 'THREE']
x = re.sub('@', lambda i: i[0] substitutions.pop(0), some_text) # this doesn't actually work
所需的输出是:
some_text = 'xxxxxxxONEyyyyyyyyyTWOzzzzzzzzzTHREE'
最佳答案
您的 lambda 中只是有一个语法错误:
>>> substitutions = ['ONE', 'TWO', 'THREE']
>>> re.sub('@', lambda _: substitutions.pop(0), some_text)
'xxxxxxxONEyyyyyyyyyTWOzzzzzzzzzTHREE'
如果不想修改列表,可以将其包装为可迭代对象。
>>> substitutions = ['ONE', 'TWO', 'THREE']
>>> subs = iter(substitutions)
>>> re.sub('@', lambda _: next(subs), some_text)
'xxxxxxxONEyyyyyyyyyTWOzzzzzzzzzTHREE'
关于python - 用 re.sub 替换列表中的元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9455515/