gpt4 book ai didi

python - 使用 re.sub 和多个替换仅替换捕获的组

转载 作者:太空狗 更新时间:2023-10-30 02:38:56 25 4
gpt4 key购买 nike

下面只是我创建的一个简单示例。

string = 'I love sleeping. I love singing. I love dancing.'
pattern =re.compile(r'I love (\w+)\.')

我只想用 re.sub 替换 (\w+) 部分。
这个问题分为两部分:

我想替换 (\w+),而不必求助于组捕获文本的其余部分。

所以我不想做这样的事情:

pattern =re.compile(r'(I) (love) (\w+)\.')
re.sub(pattern, r'/1 /2 swimming', string)

因为在处理大量文本时这可能不可靠可选组。

第二部分:

因为我将有三个匹配项,是否可以使用 re.sub 输入一个列表,该列表将遍历每个匹配项的列表并生成 sub因此。换句话说,我希望列表 ['Swimming, Eating, Jogging'] 中的每一项与匹配,(如 zip 方法)并进行替换。

所以输出应该是这样的(即使是单个总输出也可以:

'I love Swimming'
'I love Eating'
'I love Jogging'

最佳答案

您可以使用基于 lookbehind 和 lookahead 的正则表达式,然后使用 lambda 函数迭代替换词:

>>> words = ['Swimming', 'Eating', 'Jogging']
>>> pattern = re.compile(r'(?<=I love )\w+(?=\.)')
>>> print pattern.sub(lambda m: words.pop(0), string)
'I love Swimming. I love Eating. I love Jogging.'

Code Demo

关于python - 使用 re.sub 和多个替换仅替换捕获的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45682874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com