我正在尝试按顺序替换 re.findall 的结果。但是,在该示例中,同一个字符串多次出现。例如:
text = "SOME TEXT, monday-friday, MORE TEXT, thursday, MORE TEXT, monday-friday'
regex = re.compile(REGEX,re.I)
possiblereplacements = regex.findall(text)
结果是:
'monday-friday','thursday','monday-friday'
然后我需要分别替换列表中的每个元素。例如:
for item in possiblereplacements:
text = re.sub(item,item+' 11:00-17:00',text)
然而,这会替换所有实例,因此最终您会得到:
text = "SOME TEXT, monday-friday 11:00-17:00 11:00-17:00, MORE TEXT, thursday 11:00-17:00, MORE TEXT, monday-friday 11:00-17:00 11:00-17:00'
我如何调整它以获得我想要的结果:
text = "SOME TEXT, monday-friday 11:00-17:00, MORE TEXT, thursday 11:00-17:00, MORE TEXT, monday-friday 11:00-17:00'
最佳答案
单次替换有什么问题?您不需要在这里使用 re.findall
函数。只需将您的正则表达式放在一个捕获组中,并将所有匹配的字符替换为组索引 1 中的字符加上您要连接的字符串。
re.sub(r'(regex)', r'\1 11:00-17:00', text)
例子:
>>> text = "SOME TEXT, monday-friday, MORE TEXT, thursday, MORE TEXT, monday-friday"
>>> re.sub(r'(?i)([^,]*day[^,]*)', r'\1 11:00-17:00', text)
'SOME TEXT, monday-friday 11:00-17:00, MORE TEXT, thursday 11:00-17:00, MORE TEXT, monday-friday 11:00-17:00'
关于python - 分别替换同一字符串的多次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27561044/