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

Python如何读取文件并将指定标记区间的字符串追加至列表

Python实现学生姓名提取方案

实现思路

  • 新增布尔类型的提取标记位,初始设为False,控制提取逻辑的启停
  • 逐行读取文件内容,避免一次性加载大文件占用过多内存
  • 未触发提取时,仅检查当前行是否包含起始标记@@@,命中后开启提取,同时截取该标记后的内容拆分出姓名存入列表
  • 已开启提取时,优先检查当前行是否包含终止标记&##&,命中后截取该标记前的内容拆分存入列表,直接终止文件读取
  • 所有提取到的内容用split()自动处理多余空格拆分出姓名,最终用空格拼接成目标字符串

代码实现

def get_picnic_students(file_path: str) -> str:
    student_list = []
    is_extracting = False
    with open(file_path, mode='r', encoding='utf-8') as file:
        for line in file:
            # 未开始提取阶段,仅匹配起始标记
            if not is_extracting:
                if '@@@' in line:
                    is_extracting = True
                    # 截取起始标记之后的内容
                    valid_content = line.split('@@@', maxsplit=1)[1]
                    student_list.extend(valid_content.strip().split())
                continue
            # 已开始提取阶段,先匹配终止标记
            if '&##&' in line:
                # 截取终止标记之前的内容
                valid_content = line.split('&##&', maxsplit=1)[0]
                student_list.extend(valid_content.strip().split())
                break
            # 无终止标记,整行提取姓名
            student_list.extend(line.strip().split())
    # 拼接为要求的字符串格式
    return ' '.join(student_list) + ' '

if __name__ == "__main__":
    # 替换为你的实际文件路径
    res = get_picnic_students("student_picnic.txt")
    print(res)

输出结果

运行代码后输出和需求完全匹配:
bob alice rhea john mary alex roma peter

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 21:06:03