2013-05-11 2 views
0

일부 변수를 찾아 다른 것으로 바꾸려면 \W{}\W.format(sigs)을 사용하고 있습니다. 대체 후 이전에 존재했던 것과 동일한 영숫자가 아닌 문자를 복원하고 싶습니다.re.sub()에서 동일한 알파벳이 아닌 문자를 대체하십시오.

나는이 작업을 수행 할 때 :

내가 (1 &\Wz3Sigs\W == 0 같은 출력을 얻을 예상대로
sigs = 'v__a' 
CondStr = "(1 & v__a) == 0" 
CondStr = re.sub("\W{}\W".format(sigs), "\Wz3Sigs\W", CondStr) 
print CondStr 

, 내가 (1 & z3Sigs) == 0

로 출력이 어떻게 그것을 달성 할 수 원하는 실제로 동안? 이 같은

+0

'CondStr = "(1 & v_ + a) == 0"'에 대한 예상 출력은 어떻게됩니까? –

+0

'sigs'에 아무것도 없으면 대체 할 수 없습니다. 따라서 위의 경우 대체품이 없어야합니다. 'sigs'는 실제 프로그램의리스트입니다 – Sharad

+0

다음은'str.replace'를 사용하면됩니다 :'CondStr.replace (sigs, "z3Sigs")' –

답변

0

뭔가가 \W 구분

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

출력을

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

당신의 그룹을 작동하고 그냥 넣어해야합니다. Remeber는 r''을 사용하여 교체 문자열을 "원시"로 지정합니다. 그렇지 않으면 교체 \이 이스케이프됩니다.

0

특수 시퀀스 \b이 적합합니다.

CondStr = re.sub(r"\b{0}\b".format(sigs), "z3Sigs", CondStr) 
관련 문제