Python匹配指定行后获取下一行遇空行输出为空的问题求助
解决Python匹配指定行后获取有效下一行(跳过不定空行)的问题
我来帮你搞定这个问题!你的代码现在遇到的核心问题是:当标识行Escape character is '^]'.后面跟着数量不定的空行时,next(in_file)只会读取紧接着的那一行——如果那行是空行,自然输出为空,而你要的有效内容在空行之后。
问题分析
你的原代码逻辑是找到标识行后直接取下一行,但没有考虑空行的情况。文件里的结构可能是这样的:
Escape character is '^]'. (空行) (空行) abc-2#terminal length 0
这时候next(in_file)拿到的是第一个空行,不是目标内容。
修复后的代码
我们需要在找到标识行后,循环跳过所有空行,直到读取到非空的有效行:
with open(report_file_path, "r") as in_file: target_line = "Escape character is '^]'." for line in in_file: if line.strip() == target_line: # 跳过所有空行,找到下一个非空行 result = None for next_line in in_file: stripped_line = next_line.strip() if stripped_line: # 判断是否为非空行 result = stripped_line break if result: print(result)
代码说明
- 首先还是遍历文件找到标识行,用
strip()消除行首行尾的空白(包括换行符、空格),确保匹配准确。 - 找到标识行后,开启一个内层循环,继续读取后续行:
- 对每一行做
strip()处理,判断是否为空行(空字符串表示空行)。 - 一旦找到非空行,就把它赋值给
result并跳出内层循环。
- 对每一行做
- 最后打印找到的有效内容,这样就能跳过所有中间的空行,精准拿到目标行。
这样修改后,不管标识行后面有多少空行,都能正确输出abc-2#terminal length 0啦。
内容的提问来源于stack exchange,提问作者Praveen Mandadi
相关产品推荐
相关产品推荐

