如何将跨越多行的括号之间的值放入python中的列表?

时间:2013-03-22 23:14:40

标签: python list tuples

我是python和regex的新手,但我正在试图找到一种方法来实现这一点。

我有一个看起来像这样的文件:

random text up here

group groupfoo {

    item_1
    item_2
    item_3
}

group groupbar {
    item_1
    item_2
    item_3
}

random text down here

此文件中有几个这样的组。组名(groupfoo,groupbar等)都是唯一的。我希望能够以某种方式根据组名创建元组,并将项目作为值。

请帮忙!

谢谢!

1 个答案:

答案 0 :(得分:2)

这是一种没有正则表达式的方法。虽然您可能希望将regex用于下面replace次调用的行。但是,如果您的格式与您在问题中显示的格式一样严格,那么这将有效。简单(非常简单)的状态机。

import collections

grouper = collections.defaultdict(list)
with open("groups.txt") as groups:
    in_group = False
    for line in groups:
        if '{' in line:
            in_group = True
            group_name = line.replace('group ', '').replace(' {', '').strip()
            continue
        if '}' in line:
            in_group = False
        if in_group:
            grouper[group_name].append(line.strip())
print grouper

<强>输出

defaultdict(<type 'list'>, {'groupbar': ['item_1', 'item_2', 'item_3'], 'groupfoo': ['item_1', 'item_2', 'item_3']})