test1 = "<test>222</test>blah blah blah"
newVal = "222"
mstring = "(<test>).*(</test>)"
newString = re.sub(mstring,rf"\1{newVal}\2",test1)
print(newString)
我试图在我的字符串中找到一个特定的值,并使用re.sub函数替换为另一个字符串。似乎我找到了正确的匹配项并替换了,但是python正在将字符串的一部分转换为它的ascii等效值。你能帮我上面的代码,以便我产生以下输出吗
<test>222</test>blah blah blah
相反,我得到低于结果
R2</test>blah blah blah
这是一个可能的解决方案:
test1 = "<test>222</test>blah blah blah"
newVal = "111"
mstring = "(<test>).*(</test>)"
newString = re.sub(mstring, f'\g<1>{newVal}\g<2>', test1)`
print(newString) # <test>111</test>blah blah blah
您的方法可以与newVal
例如一封信一起使用:
newVal = "a"
re.sub(mstring, f'\1{newVal}\2', test1) # <test>a</test>blah blah blah
这种奇怪的行为是由于以下事实\1{newVal}
:(带有newVal=333
)将被解释为对组1333的引用。\g<1>
语法等效于\1
,但在替换中并不歧义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句