Python:以有效的方式替换向后的值

Python:以有效的方式替换向后的值,python,str-replace,Python,Str Replace,假设我有以下字符串(它不是字典) 在您看来,这是查找“Value:x”的最有效方法,其中x是任意数字,并且仅将前面的名称1替换为“test” 例如,如果x为2,我最终会得到: "Randomtext...Name1: a, randomtext, Name2: b, Value:1, randomtext, Name1:test, Name2: d, Value:2, Name1: e, Name2: f, Value:3, ...RandomText" 它们是字符串,不能表示为字典或其他py

假设我有以下字符串(它不是字典)

在您看来,这是查找“Value:x”的最有效方法,其中x是任意数字,并且仅将前面的名称1替换为“test”

例如,如果x为2,我最终会得到:

"Randomtext...Name1: a, randomtext, Name2: b, Value:1, randomtext, Name1:test, Name2: d, Value:2, Name1: e, Name2: f, Value:3, ...RandomText"

它们是字符串,不能表示为字典或其他python对象。

我建议使用特定正则表达式模式的函数(仅针对您的测试用例):

输出:

RandomText...Name1: a, Name2: b, Value:1, Name1: test, Name2: d, Value:2, Name1: e, Name2: f, Value:3, ...RandomText


(?=…)
-积极的先行断言,确保
Name1
子字符串后面紧跟
Name2
Value
(带所需值)子字符串/属性

,这不是字符串,可能是在查找字典。请做一个Python教程,就像。你为什么要这么做?(在某个值之前替换Name1听起来很简单。)>“它们是字符串,不能表示为字典或其他python对象。”–为什么不呢?因为我正在简化这个问题。事实上并不是那么简单,但它可以是“随机文本名称1a随机文本名称2b随机随机随机文本值2”,其中随机文本是任何东西。有很多随机顺序的叙述nice,我写了一个带lookarounds的复杂正则表达式,但没有注意到
Name1,Name2,Value
总是以相同的顺序。
import re

s = "RandomText...Name1: a, Name2: b, Value:1, Name1: c, Name2: d, Value:2, Name1: e, Name2: f, Value:3, ...RandomText"
x = 2
result = re.sub(r'(Name1: )[a-z](?=, Name2: [a-z]+, Value:'+ str(x) +')', '\\1test', s)

print(result)
RandomText...Name1: a, Name2: b, Value:1, Name1: test, Name2: d, Value:2, Name1: e, Name2: f, Value:3, ...RandomText