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 小助理,如未能正确解答您的问题,请继续追问。 |