Перебор префиксов с Python - PullRequest
       7

Перебор префиксов с Python

3 голосов
/ 22 сентября 2011

У меня есть строка иерархического дескриптора, которая выглядит как 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 ]

7 голосов
/ 22 сентября 2011

Как насчет:

In [9]: [s[:m.start()] for m in re.finditer(':|$', s)]
Out[9]: ['foo', 'foo:bar', 'foo:bar:baz']
1 голос
/ 25 марта 2016

Более читаемое решение:

def heirarchy(s):
    segments = s.split(':')
    result = []
    for segment in segments:
        result.append(segment)
        yield ':'.join(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...