使用Python迭代前缀

时间:2011-09-22 15:56:51

标签: python iterator

我有一个类似于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

2 个答案:

答案 0 :(得分:7)

怎么样:

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

答案 1 :(得分:1)

更易读的解决方案:

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