2011-09-22 5 views
3

foo:bar:baz과 같은 계층 적 설명자 문자열이 있습니다. 계층 구조의 요소는 :으로 구분되며 계층 구조 수준을 반복하고 싶습니다.접두어를 통해 파이썬으로 반복하기

def hierarchy(s): 
    segments = s.split(':') 
    for i in range(len(segments)): 
    prefix = ':'.join(segments[0:i+1]) 
    print prefix 
    # or do something else instead of prefix 
+1

당신이 결과를 기대하고있다'foo는 \, 이것보다 더 쉽게 일을 이렇게 쉬운 방법이 있나요 nfoo : bar \ nfoo : bar : baz \ n'? – delnan

+0

@delnan : 예, 올바르게 보입니다 –

답변

7

방법에 대해 :

In [9]: [s[:m.start()] for m in re.finditer(':|$', s)] 
Out[9]: ['foo', 'foo:bar', 'foo:bar:baz'] 
+0

비밀이지만 나는 그것을 좋아합니다. –

1

더 읽을 솔루션 :

def heirarchy(s): 
    segments = s.split(':') 
    result = [] 
    for segment in segments: 
     result.append(segment) 
     yield ':'.join(result) 
관련 문제