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
相关产品推荐
相关产品推荐

