我正在尝试基于一些定界符将列表中的所有元素组合在一起;当定界符对大于1时,我将面临困难。
说这是列表:
['{','k0c','k1b','k2b','k3b','}','{','\\g0','\\g1','\\g2','\\g3','}']
此列表中的12个项目
每当找到'{'和'}'时,我都希望将这些索引中的所有元素串联在一起,这样它就是:
['{ k0c, k1b, k2b, k3b }' , '{\\g0 , \\g1, \\g2, \\g3 }' ]
此列表中的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 }']