itertools.groupby

Neil Cerutti neilc at norwich.edu
Mon Apr 22 10:24:11 EDT 2013


On 2013-04-20, Jason Friedman <jsf80238 at gmail.com> wrote:
> I have a file such as:
>
> $ cat my_data
> Starting a new group
> a
> b
> c
> Starting a new group
> 1
> 2
> 3
> 4
> Starting a new group
> X
> Y
> Z
> Starting a new group
>
> I am wanting a list of lists:
> ['a', 'b', 'c']
> ['1', '2', '3', '4']
> ['X', 'Y', 'Z']
> []

Hrmmm, hoomm. Nobody cares for slicing any more.

def headered_groups(lst, header):
    b = lst.index(header) + 1
    while True:
        try:
            e = lst.index(header, b)
        except ValueError:
            yield lst[b:]
            break
        yield lst[b:e]
        b = e+1

for group in headered_groups([line.strip() for line in open('data.txt')],
        "Starting a new group"):
    print(group)

-- 
Neil Cerutti



More information about the Python-list mailing list