为了账号安全,请及时绑定邮箱和手机立即绑定

根据分隔符连接列表中的字符串元素

根据分隔符连接列表中的字符串元素

互换的青春 2021-12-21 11:03:37
我试图根据一些分隔符组合列表中的所有元素;当分隔符对大于 1 时,我面临困难。说这是清单:['{','k0c','k1b','k2b','k3b','}','{','\\g0','\\g1','\\g2','\\g3','}']此列表中的 12 项每当它找到 '{' 和 '}' 时,我希望这些索引中的所有元素都连接成一个,以便它是:['{ k0c, k1b, k2b, k3b }' , '{\\g0 , \\g1, \\g2, \\g3 }' ]这个列表中的 2 个项目是我想要的,分隔符内的所有元素都变成了列表的一个元素。
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

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


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


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


查看完整回答
反对 回复 2021-12-21
?
catspeake

TA贡献1111条经验 获得超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 }

但是你可以对字符串列表做任何你喜欢的事情。


查看完整回答
反对 回复 2021-12-21
  • 2 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信