如何用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
相关产品推荐
相关产品推荐

