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

如何用Python从横线分隔的文本文件中生成分组嵌套列表

问题原因

你的现有代码没有把读取到的名称对应存入每个分组的子列表中,而是把所有非分隔行统一存入全局的names列表,因此出现分组为空、所有名称攒在一起的问题。

修正后代码
#!/usr/bin/env python

key = '----------'
groups = []

# 使用with上下文管理器读文件,无需手动关闭文件,更安全
with open('filelist.txt', 'r', encoding="utf-8") as f:
    for line in f:
        # 先去掉行首尾的空白字符(包括换行符、空格)
        cleaned_line = line.strip()
        # 遇到分隔线就新增一个空分组
        if cleaned_line == key:
            groups.append([])
        # 非分隔线、且不为空行的内容,加入当前最新的分组
        elif cleaned_line:
            groups[-1].append(cleaned_line)

print(groups)
逻辑说明
  • 每次遇到分隔符----------时,就往groups里追加一个空列表,作为当前要填充的分组
  • 后续读取到的有效名称,直接追加到groups的最后一个子列表(也就是当前正在填充的分组)中
  • 用strip()处理每行可以自动去掉末尾的换行符,避免最终列表里的元素带\n后缀;额外判断cleaned_line可以自动跳过文件中的空行,不需要的话可以删掉这个判断
输出示例

用你提供的测试文件运行后,输出结果为:

[['a1', 'a2'], ['b1', 'b2', 'b3', 'b4', 'b5', 'b6'], ['c1', 'c2', 'c3']]

(你需求里写的示例少了子列表之间的逗号,上述输出是合法Python列表的标准格式)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 17:24:03