gpt4 book ai didi

python - 如何让 python 正则表达式返回所有不匹配的文本?

转载 作者:行者123 更新时间:2023-11-28 23:05:35 27 4
gpt4 key购买 nike

因此,我使用以下正则表达式成功匹配并提取了一些特殊标记的文本:

theString = u"Var 1 value: %%v:123453%%, Var 2 value: %%v:984561%%, Var 3 value: %%v:123456%%"
p = re.compile("\%%v:([0-9]*)%%")
theIds = p.findall(theString)

返回

[u'123453', u'984561', u'123456']

这正是我所需要的。接下来,我需要用一些查找值替换它们,所以接下来我想要得到的是:

[u'Var 1 value: ', u', Var 2 value: ', u', Var 3 value: ']

这样我就可以将这些字符串与从第一个列表中查找到的值粘合在一起,得到一个看起来像这样的字符串:

u“Var 1 值:一些值,Var 2 值:837,Var 3 值:更多东西”

或者,如果有更好的替换方法,我会洗耳恭听。

提前致谢!

最佳答案

使用替换函数插入任意替换。有关该功能的工作原理,请参阅 re.sub 文档。这是一个例子:

values = {
u'123453': u'Some Value',
u'984561': u'837',
u'123456': u'more stuff',
}

def insertLookup(matchobj):
return values[matchobj.group(1)]

theString = u"Var 1 value: %%v:123453%%, Var 2 value: %%v:984561%%, Var 3 value: %%v:123456%%"
p = re.compile("\%%v:([0-9]*)%%")
newString = p.sub(insertLookup, theString)

print newString
u"Var 1 value: Some Value, Var 2 value: 837, Var 3 value: more stuff"

insertLookup 函数将为每个匹配调用,并传递一个 MatchObject 。然后,我们使用匹配值(u'123453' 等)查找替换值,然后将替换值插入到 newString 中,而不是匹配的字符串中。

关于python - 如何让 python 正则表达式返回所有不匹配的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5872299/

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