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

标签 python list tuples

我对 python 和正则表达式相当陌生,但我正在尝试找到一种方法来做到这一点。

我有一个如下所示的文件:

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 等)都是唯一的。我希望能够以某种方式根据组名称创建元组并将项目作为值。

请帮忙!

谢谢!

最佳答案

这是一种没有正则表达式的方法。尽管您可能希望对下面带有 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']})

关于python - 如何将跨多行的括号之间的值放入 python 的列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15581321/

相关文章:

javascript - 如何在 Django Views 中获取静态 url

python - JSON 对象中的项目使用 "json.dumps"出现故障?

python - 引用单行树中的各个字典

arrays - 如何在 PowerShell 中将 HashSet 转换为 ArrayList?

ios - 如何从元组数组中删除对象

python - kubernetes 与 python 的集成

python - 合并一个 numpy 数组

来自 CSV 的二维列表中的 Python 组值

python - 如果元素在元组中,则选择 pandas DataFrame 行

c++ - 如何在 C++ 中初始化返回元组的变量?