0

\W{}\W.format(sigs)用来找出一些变量并用其他东西替换它们。替换后,我想恢复之前存在的相同的非字母数字字符。

当我这样做时:

sigs = 'v__a'
CondStr = "(1 & v__a) == 0"
CondStr = re.sub("\W{}\W".format(sigs), "\Wz3Sigs\W", CondStr)
print CondStr

正如预期的那样,我得到输出(1 &\Wz3Sigs\W == 0,而实际上我想要输出(1 & z3Sigs) == 0

我怎样才能做到这一点?

4

2 回答 2

0

特殊的顺序\b是合适的。

CondStr = re.sub(r"\b{0}\b".format(sigs), "z3Sigs", CondStr)
于 2014-07-03T11:00:16.017 回答
0

像这样的东西应该工作

CondStr2 = re.sub("(\W){0}(\W)".format(sigs), r"\1z3Sigs\2", CondStr)

输出

>>> CondStr
'(1 & v__a) == 0'
>>> CondStr2
'(1 & z3Sigs) == 0'

您将\W分隔符分组,然后将它们放回原处。请记住使用 使替换字符串为“原始” r'',否则替换\将被转义

于 2013-05-11T09:09:49.827 回答