如何筛选并打印文件中指定标识符对应的区块内容
解决方案
直接完善你的代码逻辑,通过一个标记变量控制打印状态,就能实现需求:
target_id = "ID2" print_content = False with open('file.txt') as f: for line in f: # 处理子集起始行(以<开头) if line.startswith('<'): # 如果已经在打印目标子集,遇到新的子集就停止 if print_content: break # 检查当前行是否包含目标ID,是则开启打印标记 if target_id in line: print_content = True print(line.rstrip('\n')) # 保留原格式,去掉多余换行 # 处于打印状态时,直接输出非起始行的内容 elif print_content: print(line.rstrip('\n'))
逻辑说明
- 用
print_content变量标记是否进入目标子集的输出阶段 - 遍历文件每一行:
- 遇到以
<开头的子集起始行时,先判断是否已经在打印:是则终止循环(因为下一个子集开始了);否则检查该行是否包含目标ID,符合条件就开启打印标记并输出该行 - 若已经开启打印标记,且当前行不是子集起始行,直接输出内容
- 遇到以
这样就能精准输出目标ID对应的整个数据子集,直到下一个子集开始前停止。
内容的提问来源于stack exchange,提问作者chrisphils26
相关产品推荐
相关产品推荐

