在python中,如何将跨多行的括号之间的值放入一个列表中?

2024-06-28 19:17:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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等)都是唯一的。我希望能够以某种方式基于组名创建元组,并将这些项作为值。你知道吗

请帮帮我!你知道吗

谢谢!你知道吗


Tags: 文件方法texthere方式grouprandomitem
1条回答
网友
1楼 · 发布于 2024-06-28 19:17:26

这里有一个没有正则表达式的方法。尽管您可能希望对下面的replace调用行使用regex。但是,如果你的格式是严格的,因为你表明它是在你的问题,那么这将工作。简单(非常简单)状态机

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']})

相关问题 更多 >