You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现满足条件时打印上一行的问题求助

解决打印目标行前一行的问题

需求回顾

你想要实现的功能是:遍历文本文件abc.txt,当某一行不包含"Apple"时,打印该行的前一行。文件内容如下:

User 1 - I like eating Apple
User 2 - I like eating Apple
User 3 - I like eating Apple
User 4 - I like eating Grapes
User 5 - I like eating Apple
User 6 - I like eating Orange

预期输出应该是:

User 3 - I like eating Apple
User 5 - I like eating Apple

你的代码问题分析

你尝试的代码逻辑出现了偏差:每次循环你都把prev_line赋值为当前行,然后当当前行不含"Apple"时,打印的其实是当前行本身(因为prev_line刚被设为当前行),这就导致输出变成了那些不含"Apple"的行,而不是它们的前一行。

正确的解决方案

我们需要先提前记录上一行的内容,等遍历到当前行时,判断当前行是否符合条件,如果符合,就打印之前保存的上一行。同时要注意跳过第一行(因为第一行没有前一行),代码如下:

with open('abc.txt', 'r') as f:
    prev_line = None
    for line in f:
        # 去除换行符,避免打印时出现多余空行
        current_line = line.rstrip('\n')
        # 只有当不是第一行,且当前行不含"Apple"时,打印上一行
        if prev_line is not None and "Apple" not in current_line:
            print(prev_line)
        # 更新prev_line为当前行,供下一次循环使用
        prev_line = current_line

代码逻辑说明

  • 初始化prev_line为None,用来存储上一行的内容
  • 遍历每一行时,先处理掉末尾的换行符
  • 判断条件:如果prev_line不为空(说明不是第一行),且当前行不包含"Apple",就打印prev_line
  • 最后将当前行赋值给prev_line,确保下一次循环能拿到正确的上一行内容

运行这段代码后,就能得到你想要的预期输出了。

内容的提问来源于stack exchange,提问作者AutomationTester

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 09:32:35