You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中按特定分隔符拆分列表为子列表

解决按特定分隔符拆分列表的问题

嘿,这个场景我太熟悉了!面对这种长度不固定的列表分组需求,完全不用纠结固定切片,用遍历+临时分组的方式就能灵活搞定。我给你两种方案,分别对应保留分隔符和不保留分隔符的情况:

方案1:保留分隔符>>

这个方案会把每个子列表的开头保留>>,和你示例里的输出一致:

original_list = ['>>', '1. Title', 'Some data', 'Some data', 'Some data', '>>', '2. Title', 'Some data', 'Some data', 'Some data']
result = []
current_group = []

for item in original_list:
    if item == '>>':
        # 如果当前已经攒了一组内容,先把它放进结果列表
        if current_group:
            result.append(current_group)
        # 新建一个分组,把当前的>>加进去作为开头
        current_group = [item]
    else:
        # 非分隔符元素,直接加到当前分组里
        current_group.append(item)

# 循环结束后,别忘了把最后一组内容也加进去(因为最后没有触发>>的判断)
if current_group:
    result.append(current_group)

# 验证输出
for idx, entry in enumerate(result, 1):
    print(f"Entry {idx}: {entry}")

运行后你会得到:

Entry 1: ['>>', '1. Title', 'Some data', 'Some data', 'Some data']
Entry 2: ['>>', '2. Title', 'Some data', 'Some data', 'Some data']

方案2:不保留分隔符>>

如果不需要把>>留在子列表里,只需要稍微调整一下逻辑:

original_list = ['>>', '1. Title', 'Some data', 'Some data', 'Some data', '>>', '2. Title', 'Some data', 'Some data', 'Some data']
result = []
current_group = []

for item in original_list:
    if item == '>>':
        # 遇到分隔符时,把当前已有的分组(不含>>)加入结果
        if current_group:
            result.append(current_group)
        # 重置分组,准备接收下一组内容
        current_group = []
    else:
        current_group.append(item)

# 同样处理最后一组
if current_group:
    result.append(current_group)

# 验证输出
for idx, entry in enumerate(result, 1):
    print(f"Entry {idx}: {entry}")

输出结果会是:

Entry 1: ['1. Title', 'Some data', 'Some data', 'Some data']
Entry 2: ['2. Title', 'Some data', 'Some data', 'Some data']

额外小提示

如果你的原始列表开头可能没有>>,或者存在空分组的情况,可以最后加一步过滤:

# 过滤掉空的分组
result = [group for group in result if group]

这样不管列表开头有没有分隔符,都能得到干净的有效分组~

内容的提问来源于stack exchange,提问作者Joe Healey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:56:18