一个CAS编号以连字符“-”分为三部分,第一部分有2到7位数字,第二部分有2位数字,第三部分有1位数字作为校验码。
CAS编号以升序排列且没有任何内在含义。校验码的计算方法如下:CAS顺序号(第一、二部分数字)的最后一位乘以1,最后第二位乘以2,往前依此类推,然后再把所有的乘积相加,再把和除以10,其余数就是第三部分的校验码。
举例来说,水(H2O)的CAS编号前两部分是7732-18,则其校验码= ( 8×1 + 1×2 + 2×3 + 3×4 + 7×5 + 7×6 ) mod 10 = 105 mod 10 = 5(mod是求余运算符)
这是百科上的解释
怎么验证呢,比如给一个CAS号,如何验证是否是合格的呢?
def check_casnum(cas_str="5080-50-2"): # 最后一位校验码 last_code = cas_str[-1] # 去掉校验码之后的数据 check_code = cas_str[:-1].replace("-", "") # 计算长度 length_code = len(check_code) # 结果集 sum_data = 0 for dd in check_code: sum_data += int(dd)*length_code # 计算一位递减 length_code = length_code - 1 # print(length_code) check_result = sum_data % 10 print(last_code, check_result) print(str(check_result) == last_code)
这是自己写的一个验证方法,测试发现没什么问题