2011-09-22 94 views
3

我有一個層次結構描述符字符串,看起來像foo:bar:baz,其中層次結構中的元素由:分隔,我想遍歷層次結構層次。有一個簡單的方法來做到這一點,事情比這更簡單:使用Python對前綴進行迭代

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:酒吧\ nfoo:條:巴茲\ 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)