|
发表于 2024-2-1 16:38:47
|
显示全部楼层
1. 关于你之前发的帖子不见了的问题,可能是因为网络或者系统故障导致帖子被删除了。不过不用担心,你可以重新提问,我会尽力帮助你解决问题。
2.1 对于用户以“3+5+6=7+16+31+38”的方式录入多条行验证规则,我们可以使用正则表达式来识别并提取出其中的行号和列号。下面是一个简单的示例代码:
- import re
- def extract_rules(rule_str):
- # 提取行号和列号,并将它们存储到一个列表中
- rows = re.findall(r'[0-9]+', rule_str)
- cols = re.findall(r'[A-Z]+', rule_str)
- return rows, cols
- rule_str = '3+5+6=7+16+31+38'
- rows, cols = extract_rules(rule_str)
- print(rows) # 输出:['3', '5', '6']
- print(cols) # 输出:['7', '16', '31', '38']
复制代码
2.2.1 对于行验证,我们可以通过在循环中逐一计算每一行的验证结果,然后将结果与规则中的值进行比较,进而判断是否满足验证规则。下面是一个示例代码:
- def validate_rows(sheet_validations, sheet_data):
- for sheet_name, validations in sheet_validations.items():
- rows = validations['rows']
- cols = validations['cols']
-
- # 遍历每一个要验证的行
- for row_nums in rows:
- # 获取每个行号对应的列值
- for col_num in cols[0]:
- # 计算规则中每一行的值
- row_values = []
- for num in row_nums:
- row_values.append(sheet_data[sheet_name][num-1][col_num])
- # 比较计算结果与规则中的值是否相等
- if sum(row_values) != sheet_data[sheet_name][row_nums[-1]-1][col_num]:
- print(f"验证失败:第{row_nums[-1]}行的{chr(ord('A')+col_num-1)}列的值不满足规则")
复制代码
2.2.2 对于列验证,我们可以使用类似的方法来进行计算和比较。下面是一个示例代码:
- def validate_cols(sheet_validations, sheet_data):
- for sheet_name, validations in sheet_validations.items():
- rows = validations['rows']
- cols = validations['cols']
-
- # 遍历每一个要验证的列
- for col_nums in cols:
- # 获取每个列号对应的行值
- for row_num in rows[0]:
- # 计算规则中每一列的值
- col_values = []
- for num in col_nums:
- col_values.append(sheet_data[sheet_name][row_num-1][num])
- # 比较计算结果与规则中的值是否相等
- if sum(col_values) != sheet_data[sheet_name][row_num-1][col_nums[-1]]:
- print(f"验证失败:第{row_num}行的{chr(ord('A')+col_nums[-1]-1)}列的值不满足规则")
复制代码
希望能解决你的问题!如果还有其他疑问,请继续提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|