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

如何匹配指定ID后跳转至下一行统计Solution词数?

问题需求与解决方案

需求说明

现有存储唯一ID的id.txt文件,以及包含日志内容的Sample.txt文件。需要实现以下逻辑:

  • 读取id.txt中的所有ID
  • 在Sample.txt中匹配同时包含该ID和[RQ]标识的行
  • 跳转到匹配行的下一行,统计其中Solution关键词的出现次数
  • 输出统计结果并写入文件

原代码存在的问题

  • 未导入re模块,正则表达式功能无法使用
  • readlines()读取的ID末尾带有换行符\n,会导致匹配失败
  • 正则表达式r'{actual_id}|RQ'逻辑错误:既没有正确嵌入变量,又使用了“或”逻辑,不符合“同时包含ID和[RQ]”的需求
  • 调用line.next()错误:line是字符串类型,没有next()方法,应该通过文件迭代器获取下一行
  • 逻辑判断next_line == 'RQ'完全偏离需求,我们需要处理的是匹配行的下一行内容
  • 每次循环重复打开日志文件,效率极低,且文件名与需求中的Sample.txt不符
  • 代码存在缩进错误,部分逻辑块未闭合
  • 写入output.txt的内容不符合需求,需求是统计次数而非写入行内容

正确实现代码

import re

# 读取id.txt中的ID,去除换行和空白字符
with open('id.txt', 'r') as id_file:
    target_ids = [id_str.strip() for id_str in id_file.readlines() if id_str.strip()]

# 遍历日志文件,处理匹配逻辑
results = {}
with open('Sample.txt', 'r') as log_file:
    log_iter = iter(log_file)
    for line in log_iter:
        stripped_line = line.strip()
        # 检查当前行是否同时包含目标ID和[RQ]
        for target_id in target_ids:
            if target_id in stripped_line and '[RQ]' in stripped_line:
                try:
                    # 获取匹配行的下一行
                    next_line = next(log_iter).strip()
                    # 统计Solution关键词出现次数
                    solution_count = next_line.count('Solution')
                    results[target_id] = solution_count
                    print(f"ID {target_id}: Solution出现次数 = {solution_count}")
                except StopIteration:
                    # 处理文件末尾无下一行的情况
                    results[target_id] = 0
                    print(f"ID {target_id}: 匹配行后无内容,Solution次数 = 0")
                break

# 将结果写入输出文件
with open('output.txt', 'w') as output_file:
    for id_str, count in results.items():
        output_file.write(f"ID: {id_str}, Solution出现次数: {count}\n")

代码关键点说明

  • 先预处理目标ID,去除换行和空白字符,避免匹配错误
  • 使用文件迭代器iter(log_file),通过next()高效获取下一行内容
  • 匹配逻辑改为同时包含目标ID和[RQ],无需复杂正则
  • 直接用count('Solution')统计关键词,简洁高效
  • 捕获StopIteration异常,防止文件末尾无下一行导致崩溃
  • 只打开一次日志文件,提升运行效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:27:25