我正在使用\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
我怎样才能实现这一目标?
答案 0 :(得分:0)
这样的事情应该有效
CondStr2 = re.sub("(\W){0}(\W)".format(sigs), r"\1z3Sigs\2", CondStr)
输出
>>> CondStr
'(1 & v__a) == 0'
>>> CondStr2
'(1 & z3Sigs) == 0'
您对\W
分隔符进行分组,然后将它们放回去。记得使用r''
使替换字符串“原始”,否则替换\
将被转义
答案 1 :(得分:0)
特殊序列\b
是合适的。
CondStr = re.sub(r"\b{0}\b".format(sigs), "z3Sigs", CondStr)