Python如何从多行结果中提取包含指定字符串的行?代码无输出排查
核心错误原因
- 你遍历
response_without_empty_lines的逻辑存在本质偏差:这个变量是把所有非空行拼接起来的长字符串,不是逐行组成的列表。Python的for循环遍历字符串时,会逐个取出单个字符作为循环变量,不会自动按行拆分。这种情况下循环里的判断项都是长度为1的单个字符,完全不可能匹配到长度为14的'Device is ready'字符串,if条件永远不会触发,自然没有任何输出。
可落地的修正方法
- 最省事的方式:不用在去空行流程里把拆分好的行重新拼回长字符串,直接复用之前已经生成的
non_empty_lines列表(本身就是拆分好的逐行有效内容)做遍历匹配:
for line in non_empty_lines: if 'Device is ready' in line: print(line)
- 如果一定要基于已经拼接完成的
response_without_empty_lines长字符串做匹配,需要先把字符串按换行符重新拆分成逐行列表,再执行遍历查找,不能直接遍历字符串本身:
for line in response_without_empty_lines.split("\n"): if 'Device is ready' in line: print(line)
附带的代码优化建议
你之前手动循环拼接response_without_empty_lines的写法可以简化,避免重复循环消耗性能:
lines = decoded_bytes.split("\n") non_empty_lines = [line for line in lines if line.strip()] # 直接用join方法生成带换行的去空行文本,替代手动+=拼接的循环 response_without_empty_lines = "\n".join(non_empty_lines) + "\n"
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

