Python脚本提取文本值:忽略行前缀、筛选目标匹配结果问题
问题原因
你的代码存在两个核心问题:
- 循环逻辑错误:遍历
LINE in MATCHLINE时,调用string.split传入的是整个MATCHLINE列表,不是单个匹配行,导致拆分结果混入了换行符和相邻行内容 - 未做结果过滤:关键词
CORD,PWR匹配到了两行结果,没有过滤掉第一条不需要的R609C前缀行
修复后代码
import string psu = "" KEYWORDS = "CORD,PWR" MATCHLINE = cfi_tools.cfi_textfind(KEYWORDS, HCF_INI) if MATCHLINE: target_line = None # 遍历匹配结果,跳过不需要的R609C前缀行 for line in MATCHLINE: line = line.strip() # 移除首尾换行、空白字符 if line.startswith("R609C="): continue target_line = line break if target_line: line_parts = string.split(target_line, "=") if len(line_parts) >= 2: psu = line_parts[1] # 取等号后的目标值 print psu else: cfi_tools.cfi_fail("Cannot find expected keywords: " + KEYWORDS) if psu == "": psu = "N/A" cfi_tools.cfi_log("NO psu info got from GCF THEREFORE UNKNOWN RECORDED" ,"LOG") else: cfi_tools.cfi_log(" PSU Info FOUND IN GCF IS %s" % psu,"LOG")
修改说明
- 修正了split参数错误,拆分对象改为单条匹配行,避免结果异常
- 增加了行过滤逻辑:跳过
R609C=前缀的行,相比直接取第二条匹配结果的写法更稳妥,不会因为文件内容调整、匹配顺序变化出错 - 增加了
strip处理,移除行尾的换行符,避免返回值带多余的\r\n后缀 - 增加了拆分结果长度判断,避免行内无等号时出现索引报错
内容的提问来源于stack exchange,提问作者Winter Bucky
相关产品推荐
相关产品推荐

