How to process a string into layer of sublists?

list, python, recursion, sublist

Solution

here you go:

lst = "aaabaabacabaacaca"

def go(it):
    for x in it:
        if x == 'b':
            yield [x] + list(go(it))
        else:
            yield x
            if x == 'c':
                break 


print list(go(iter(lst)))

Problem

This is the example form, I'll try to explain it in words later. I have a list from breaking up a string... say ``` [a, a, a, b, a, a, b, a, c, a, b, a, a, c, a, c, a] ``` where b is criteria 1 and c is criteria 2 I want to break it into a list like this: ``` [a, a, a, [b, a, a, [b, a, c], a, [b, a, a, c], a, c], a] ``` So I want to process the string such that when I go through it, if the item matches criteria 1, open a new list, if item matches criteria 2, close the list and return one level above. I've tried to do something like this, but it's not working very well. ``` def sublist(self, l): for line in list: if not b: self.data.append(line) else: sublist(l[line:]) #<----- not sure how to recurse it. ``` I've seen breaking list into equal sized list before on stackoverflow, but not one breaking into sublist using a set of criteria.

Original source