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

Python处理文本文件:按#规则分组生成列表 排除Stream Number类头行

分组拆分正确实现

修复思路

对应原代码的两处核心缺陷做针对性调整:

  • 过滤规则升级:识别到包含#Stream Number的行直接跳过,既不纳入结果列表,也不触发分组切分
  • 目标ID行处理:将紧跟Stream头行、不含Stream Number字样的带#行作为新分组的首元素,不再将其排除在分组外

可直接运行的代码

with open('your_file.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()

master_list = []
current_group = []

for raw_line in lines:
    # 去除首尾空白、换行符,规避格式干扰
    line = raw_line.strip()
    # 跳过文件中可能存在的空行
    if not line:
        continue
    # 直接跳过所有需排除的Stream头行
    if '#Stream Number' in line:
        continue
    # 遇到非Stream类的带#目标ID行:完成上一组的存入、开启新组
    if '#' in line:
        if current_group:
            master_list.append(current_group)
        current_group = [line]
    # 普通无#数据行追加到当前组
    else:
        if current_group:
            current_group.append(line)

# 手动存入最后一组,避免末尾分组漏存
if current_group:
    master_list.append(current_group)

通用适配说明

代码可适配长度可变、行内容动态调整的文件场景,额外做了三类兼容处理:

  • 逐行做去首尾空白处理,避免行末尾空格、换行符导致的字符串匹配错误
  • 增加空行跳过逻辑,兼容文件中插入无意义空行的情况
  • 增加异常边界判断,避免文件开头无前置ID行就出现普通数据行时的列表报错

示例输出(针对给定测试文件)

运行代码后master_list的结构为:

[
    ["#944_testing_1)#", "Data1", "133", "124", "FRE", "new", "Cable", "Sat"],
    ["#94_fr_change#", "DataB", "233", "445", "DEU", "Old", "Sat"],
    ["#822_Sports_(FR)#", "MyValue", "4566", "455", "ITA", "NEW"]
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 11:36:07