如何为变量赋多值,匹配列表任意值时临时替换变量执行逻辑?
解决匹配多值并临时替换变量的问题
你的核心需求是:维护一个包含多个目标值的列表,每次读取文件片段时,检查是否匹配列表中的任意元素;匹配到后临时将变量替换为该匹配值,执行指定操作后再恢复变量为原始列表。
原代码的问题
any(i)用法错误:any()函数是用来判断可迭代对象中是否存在真值,不是用来获取具体匹配项的any(i) = i属于语法错误,不能给函数返回值赋值- 最后
i = i完全无效,无法恢复原始列表
正确实现代码
# 先把原始匹配列表存起来,避免操作时丢失 original_i = ["FA 3B 65 01", "DA 1C 24 71", "BA 5B 71 21"] i = original_i # 初始化i为原始列表 with open('hexfile', 'r') as file: # 每次读取32个字符的片段 while line := file.read(32): # 逐个检查原始列表里的目标值 for match_val in original_i: if match_val in line: # 临时把i换成匹配到的具体值 i = match_val # -------------------------- # 在这里执行你需要的操作,比如: print(f"当前匹配到: {i},开始处理...") # -------------------------- # 操作完成后,把i恢复成原始列表 i = original_i # 如果只需要处理第一个匹配项,就跳出循环;要处理多个就删掉break break
补充说明
- 如果同一文件片段里可能存在多个匹配值,去掉代码里的
break即可逐个处理 - 因为列表里的元素是字符串(不可变类型),直接赋值
i = original_i就足够,不需要额外拷贝;如果列表里是可变元素(比如子列表),建议用original_i.copy()来避免引用修改问题 - 注意
read(32)是按字符数读取,如果你的hex文件是二进制格式,需要把打开模式改成'rb',同时匹配逻辑也要对应调整
内容的提问来源于stack exchange,提问作者nOsfezodus
相关产品推荐
相关产品推荐

