在给定列表的情况下,使用 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/

10-16 03:57