You need to enable JavaScript to run this app. Python如何从多行结果中提取包含指定字符串的行?代码无输出排查
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 04:54:03