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

如何使用Python提取文本文件中两个分隔字符串之间的多段内容

问题说明

你原有代码的嵌套while循环会触发死循环:进入row_start=True状态后没有退出条件,会一直重复插入当前行,不会跳到下一行处理。

因为你总共有16个分段,不建议单独定义16个独立变量,用一个总列表存储所有分段更便于后续遍历处理,实现代码如下:

with open(txt_file_path, 'r', encoding='utf-8') as f:
    # 提前去掉每行末尾的换行符,避免后续处理冗余空白
    lines = [line.rstrip('\n') for line in f]

sections = []  # 所有分段按顺序存在这里,sections[0]就是section1,sections[1]是section2,以此类推
temp_block = []
in_table = False  # 标记是否已经进入表格区域,跳过开头的YAML标题段

for line in lines:
    # 判断当前行是不是表格分隔线
    if line.startswith('+') and ('-----' in line or '=====' in line):
        # 如果已经在收集内容,遇到分隔线就把当前收集的块存到总列表,清空临时列表准备下一段
        if in_table and temp_block:
            sections.append(temp_block)
            temp_block = []
        in_table = True  # 第一次遇到分隔线就标记进入表格区域
        continue  # 直接跳过分隔线,不存入结果
    
    # 只有在表格区域内、且是表格内容行(以|开头)才会被收集
    if in_table and line.startswith('|'):
        # 如果需要去掉行尾的# Section注释,就放开下面这行,不需要的话直接append(line)即可
        # line = line.split('#')[0].rstrip()
        temp_block.append(line)

# 循环结束后,最后一个未处理的分段也要加入总列表
if temp_block:
    sections.append(temp_block)

# 如果需要单独赋值给指定变量,可手动映射:
section_1_list = sections[0]
section_2_list = sections[1]

逻辑说明

  1. 自动跳过开头的YAML标题区域,只处理表格范围内的内容
  2. 所有以+开头的分隔线会被直接过滤,不会存入结果列表
  3. 按分隔线自动拆分分段,16个分段会按顺序存在sections列表中,用下标即可访问对应分段的内容
  4. 可选支持自动删除行尾的注释内容,按需启用对应代码行即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:30:00