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

时间:2017-04-26 07:51:21

标签: python str-replace

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

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

在您看来,哪种方式最有效的方法是查找“值:x”,其中x是任意数字,并用“test”替换之前的Name1?

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

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

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

1 个答案:

答案 0 :(得分:2)

我建议re.sub()函数使用特定的正则表达式模式(仅适用于您的测试用例):

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

(?=...) - 正向前瞻断言,确保Name1子字符串后跟Name2Value(带有所需值)子字符串/属性