2011-09-22 99 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)