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

