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

如何用Python基于文件中字符串最后出现位置输出指定行

问题解决:找到最后一次"bring it on"后含err的行

问题描述

我有一个文本文件com.txt,内容如下:

Error logs are useful in many respects.
bring it on
A network or system administrator can resolve errors more quickly and easily with the information available
from the error logs
bring it on
[err] - not found
Error logs also could provide insights on ha
bring it on
cooll in this way
[err] - there is no way
hopefully
err - back
success

需要编写Python程序找到字符串bring it on的最后一次出现位置,仅输出该位置之后包含err的行。预期输出:

[err] - there is no way
err - back

尝试了以下代码,但输出所有bring it on行,无法得到预期结果:

a = 'bring it on'
with open('com.txt', 'r') as file_:
  line_list = list(file_)
  line_list.reverse()

  for line in line_list:
    if line.find(a)!= -1:
      # do something
      print(line)

解决思路

  1. 读取文件所有行,定位最后一次出现bring it on的行索引
  2. 从该索引的下一行开始遍历,筛选出包含err的行(可选择是否区分大小写)

修正后的代码

target_str = 'bring it on'
match_str = 'err'

with open('com.txt', 'r') as file:
    # 读取所有行并去除末尾换行符,避免输出空行
    lines = [line.rstrip('\n') for line in file]

# 记录最后一次出现目标字符串的行索引
last_occurrence_idx = -1
for idx, line in enumerate(lines):
    if target_str in line:
        last_occurrence_idx = idx

# 筛选并输出符合条件的行
if last_occurrence_idx != -1:
    for line in lines[last_occurrence_idx + 1:]:
        # 若需严格匹配小写err,去掉.lower()即可
        if match_str in line.lower():
            print(line)

代码说明

  • 读取文件时用rstrip('\n')去除每行末尾的换行符,避免输出时出现多余空行
  • 通过遍历所有行,持续更新目标字符串的出现索引,最终得到最后一次出现的位置
  • 从最后一次出现位置的下一行开始,检查每行是否包含err:
    • 用line.lower()实现不区分大小写匹配(比如匹配Err、ERR等),如果需求是仅匹配小写err,删除该方法即可
  • 直接输出符合条件的行,得到预期结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:25:16