如何从文本文件提取字段值并验证指定数值匹配条件?
实现验证逻辑的完整方案
首先,我们需要从文件中提取指定number对应的info值,转为整数后完成计算对比。以下是完整的实现代码:
import re # 定义正则,精准捕获number和info的十六进制数值部分 pattern = r'number="(0x[\w]+)".*info="(0x[\w]+)"' # 用字典存储number到info整数的映射,方便后续快速查找 info_map = {} with open("in.txt", "r") as fin: for line in fin: match_result = re.search(pattern, line) if match_result: num_str = match_result.group(1) # 将十六进制字符串转为整数,便于计算 info_int = int(match_result.group(2), 16) info_map[num_str] = info_int # 指定需要验证的两个number值 target_num1 = "0x12" target_num2 = "0x356" # 先检查目标number是否存在于映射中 if target_num1 in info_map and target_num2 in info_map: # 执行计算并对比 calculated_value = info_map[target_num1] + 0x00000004 if calculated_value == info_map[target_num2]: print("匹配成功:0x12的info值加0x4等于0x356的info值") else: print(f"匹配失败:计算结果{hex(calculated_value)}与目标值{hex(info_map[target_num2])}不相等") else: print("错误:文件中未找到指定的number记录")
关键细节说明:
- 正则优化:调整后的正则直接捕获
number和info的数值内容,避免额外的字符串截取操作 - 数值转换:通过
int(hex_str, 16)将十六进制字符串转为整数,才能进行算术运算 - 边界处理:增加了目标number存在性判断,防止因文件缺失记录导致的报错
- 数据存储:用字典存储映射关系,让后续查找目标值的操作更高效
内容的提问来源于stack exchange,提问作者V_S
相关产品推荐
相关产品推荐

