根据定界符将列表中的字符串元素连接起来

时间:2019-03-28 21:43:32

标签: python python-2.7 parsing delimiter

我正在尝试基于一些定界符将列表中的所有元素组合在一起;当定界符对大于1时,我将面临困难。

说这是列表:

['{','k0c','k1b','k2b','k3b','}','{','\\g0','\\g1','\\g2','\\g3','}']

此列表中的12个项目

每当找到'{'和'}'时,我都希望将这些索引中的所有元素串联在一起,这样它就是:

['{ k0c, k1b, k2b, k3b }' , '{\\g0 , \\g1, \\g2, \\g3 }' ]

此列表中的2项是我想要的,分隔符内的所有元素都变成了列表的一个元素。

2 个答案:

答案 0 :(得分:0)

应该是这样的:

input_data = [
    "{",
    "k0c",
    "k1b",
    "k2b",
    "k3b",
    "}",
    "{",
    "\\g0",
    "\\g1",
    "\\g2",
    "\\g3",
    "}",
]
lists = []
current_list = None

for atom in input_data:
    if atom == "{":
        assert current_list is None, "nested lists not supported"
        current_list = []
        lists.append(current_list)
    elif atom == "}":
        current_list.append(atom)
        current_list = None
        continue
    assert current_list is not None, (
        "attempting to add item when no list active: %s" % atom
    )
    current_list.append(atom)

for lst in lists:
    print(" ".join(lst))

输出为

{ k0c k1b k2b k3b }
{ \g0 \g1 \g2 \g3 }

但是您可以对字符串列表进行任何操作。

答案 1 :(得分:0)

假设您的数据没有任何退化的情况,我们将始终期望'}','{'来分隔您的组。

因此,获得所需输出的一种简单方法是将字符串连接在一起,在}上分割,然后格式化结果列表元素。

l = ['{','k0c','k1b','k2b','k3b','}','{','\\g0','\\g1','\\g2','\\g3','}']
out = [x.replace("{,", "{").strip(", ") + " }" for x in ", ".join(l).split("}") if x]
print(out)
['{ k0c, k1b, k2b, k3b }', '{ \\g0, \\g1, \\g2, \\g3 }']