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

Python按条件提取文本文件数据时IndexError问题排查及解决

问题解答:提取指定行内的数值并修复正则错误

错误原因

你写的正则表达式r',160p30'没有定义任何捕获组(即没有用()包裹要提取的目标内容),但代码里却尝试用re.search(pattern, line)[1]去获取第1个捕获组的内容,这直接导致了IndexError: no such group。而且这个正则本身也没匹配到你真正需要的[]内的数值,只是匹配了行尾的,160p30,逻辑完全偏离需求。

正确实现方式

要完成需求,我们可以分两步走:先筛选出包含160p30的行,再提取该行中[]内的数值并格式化。下面是两种可行的实现:

方法1:字符串直接处理(简单直观)

import numpy as np

def extract_160p30_values(psnr_path):
    a_list = []
    tmp = np.zeros(len(psnr_array))  # 确保psnr_array已提前定义
    with open(psnr_path, 'r') as f:
        for line in f:
            line = line.strip()
            # 筛选目标行
            if '160p30' in line:
                # 截取[]内的内容
                start = line.find('[') + 1
                end = line.find(']')
                nums_segment = line[start:end]
                # 替换逗号为空格,输出目标格式
                formatted_str = nums_segment.replace(',', '').strip()
                print(formatted_str)
                # 转成浮点数存入列表
                float_nums = [float(num) for num in formatted_str.split()]
                a_list.extend(float_nums)
    return tmp, a_list

方法2:正则表达式匹配(更灵活)

如果偏好正则,可以直接写一个能捕获[]内数值且匹配行尾标识的模式:

import re
import numpy as np

def extract_160p30_values(psnr_path):
    a_list = []
    tmp = np.zeros(len(psnr_array))  # 确保psnr_array已提前定义
    # 正则模式:匹配[]内的数值段,同时限定行尾为160p30
    pattern = r'\[([\d.,\s]+)\],0,160p30$'
    with open(psnr_path, 'r') as f:
        for line in f:
            match_result = re.match(pattern, line.strip())
            if match_result:
                # 提取捕获到的数值字符串
                nums_str = match_result.group(1)
                # 格式化为空格分隔的字符串
                formatted_str = nums_str.replace(',', '').strip()
                print(formatted_str)
                # 转成浮点数列表
                float_nums = [float(num) for num in formatted_str.split()]
                a_list.extend(float_nums)
    return tmp, a_list

注意事项

代码中的psnr_array需要你提前定义好长度,否则np.zeros(len(psnr_array))会触发报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:15:47