2014-04-28 2 views
0

반복되는 연속적인 혼수 상태의 문자열이 있는데, 예를 들어 0과 같이 문자가 혼입되는 사이에 삽입하고 싶습니다. 내가의 re.sub 실행하면 무엇을 반환하는 것입니다 :반복되는 값의 연속 된 모든 쌍을 바꿉니다.

re.sub(r",,", ",0," , "a,,,,,,,,,,,,,a",) 
'a,0,,0,,0,,0,,0,,0,,a' 

내가 원하는 결과이 같은 모든 대체한다 :

'a,0,0,0,0,0,0,0,0,0,0,0,0,a' 

가 일어나고 왜 이해는 거기에 중복되어 패턴을 수정하는 방법을 모르겠다.

답변

2

:

>>> re.sub(r",(?=,)", ",0", "a,,,,,,,,,,,,,a") 
'a,0,0,0,0,0,0,0,0,0,0,0,0,a' 

또는를 또는 정규 표현식없이 :

>>> ",".join(x or "0" for x in "a,,,,,,,,,,,,,a".split(",")) 
'a,0,0,0,0,0,0,0,0,0,0,0,0,a' 
+0

짧고 달콤한. :) – zx81

+0

lookahead, 그냥 내가 놓친 것, 감사합니다. – supita

0

이 원하는 결과를 달성 : 다른 쉼표 뒤에 쉼표를 일치하도록 내다을 사용하고, 예를 들어, ",0"와 일치를 대체 할 수

In [1]: re.sub(r",,", ",0,0" , "a,,,,,,,,,,,,,a",) 
Out[1]: 'a,0,0,0,0,0,0,0,0,0,0,0,0,a' 
관련 문제