|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
前贴有大佬回复我的问题如下:
2.1 多条行/列验证规则的识别和存储
对于用户输入的形如“3+5+6=7+16+31+38”或者“M+N+O+P+Q+R=S+T+U+V+W+X+Y”这样的验证规则,我们需要将其分解成左边和右边的两个部分,再进一步分解成单独的数字或字母。这可以通过字符串分割和映射实现。
def parse_validation_rule(rule):
# 分割等号两侧
left_side, right_side = rule.split('=')
# 分割左侧和右侧的元素
left_elements = left_side.split('+')
right_elements = right_side.split('+')
# 将字母转换为列号,数字保持不变
def convert(element):
if element.isalpha():
# 将列字母转换为列号(例如A -> 0, B -> 1)
return ord(element.upper()) - ord('A')
else:
# 将字符串数字转换为整数
return int(element) - 1 # 减1是因为Excel行列是从1开始的
return [list(map(convert, left_elements)), list(map(convert, right_elements))]
# 示例
print(parse_validation_rule("3+5+6=7+16+31+38"))
print(parse_validation_rule("M+N+O+P+Q+R=S+T+U+V+W+X+Y"))
由此我提出如下新的问题:
1.这样的话,用户可能同时录入行规则(数字形式)和列规则(大写字母形式),能否多加一个条件对录入情形自动识别、分开保存为”行规则“和”列规则“呢?
2.针对每一个工作簿中的每一个sheet,行验证规则和列验证的储存样式是:sheet_validations[sheet_name] = {'rows': row_validations, 'cols': col_validations},
储存是这样的样式: {'sheet1': {'rows': [(5, [6, 15, 30, 37])], 'cols': [(4, [5, 6, 7, 8])]}, 'sheet2': {'rows': [(4, [5, 10, 15, 20])], 'cols': [(4, [5, 6, 7, 8, 41])]}}。
储存的结果与sheet名一一对应,以便后续遇到同名的sheet时自动调用。
请问如何实现?
回复请注意python格式。
|
|