Python 基于分隔符连接列表中的字符串元素

Python 基于分隔符连接列表中的字符串元素,python,python-2.7,parsing,delimiter,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项是我想要的,分隔符中的所

我试图在一些分隔符的基础上将列表中的所有元素组合起来;当分隔符对大于1时,我将面临困难

假设以下是列表:

['{','k0c','k1b','k2b','k3b','}','{','\\g0','\\g1','\\g2','\\g3','}']
此列表中的12项

每当它找到“{”和“}”时,我希望将这些索引中的所有元素连接成一个,以便:

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

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

类似这样的东西可以实现以下目的:

输入数据=[
"{",
“k0c”,
“k1b”,
“k2b”,
“k3b”,
"}",
"{",
“\\g0”,
“\\g1”,
“\\g2”,
“\\g3”,
"}",
]
列表=[]
当前列表=无
对于输入数据中的atom:
如果原子=“{”:
断言当前\u列表为无,“不支持嵌套列表”
当前_列表=[]
列表。追加(当前的\u列表)
elif atom==“}”:
当前_list.append(原子)
当前列表=无
持续
断言当前_列表不是无(
试图在没有活动列表时添加项目:%s“%atom”
)
当前_list.append(原子)
对于列表中的lst:
打印(“.join(lst))
输出是

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

但是您可以对字符串列表执行任何您喜欢的操作。

假设您的数据没有任何退化的大小写,我们总是希望使用
'}','{'
来分隔您的组

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

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

你们有嵌套对吗?你们能详细说明一下嵌套对吗?你们说的是列表的列表吗?意思是一个大括号后面总是紧跟着一个大括号,然后是另一个大括号?或者你可以有类似于
[“{”,“a”,“{”,“b”,“}”,“c”,“}”]
的东西吗?哦,不。。我不会有任何嵌套的大括号。谢谢。我可以要求您详细说明一下“for x in”和“if x”部分在这方面的作用吗@pault@zaki这就是所谓的列表理解。如果有多个{}{}{}{}{},这段代码会为所有这些代码执行吗?我仍然不明白为什么会有if。@zaki这个
if
是用来处理最后的
}
的。理解的最好方法是尝试一下有没有。一块一块地试一下——首先是
join
,然后是
split
,等等……输出应该是:{k0c,k1b,k3b}{\g0,g1,g2,g3}正如前面所说的,你可以用列表做任何你喜欢的事情,例如
,'.join(lst)
,如果你需要逗号的话。