全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成。

校验码按照以下公式计算:

C9=11−MOD(∑i=18Ci×Wi,11)

C_9=11-MOD(\sum_{i=1}^{8}C_i×W_i,11)
式中:

  • MOD——代表求余函数;
  • i——代表代码字符从左至右位置序号;
  • CiC_{i}——代表第i位上的代码字符的值,代码字符机器处理字符数值见下表:
字符 0 1 9 A B Y Z
数值 0 1 9 10 11 34 35
  • C9C_9——代表校验码;
  • WiW_i——代表第i位上的加权因子,其数值见下表:
i 1 2 3 4 5 6 7 8
Wi 3 7 9 10 5 8 4 2

当C9的值为10时,校验码应用大写的拉丁字母X表示;当C9的值为11时校验码用0表示。

为便于人工识别,应使用一个连字符“-”分隔本体代码与校验码。机读时,连字符省略。表示形式为:xxxxxxxx-X

所以,我们写一个方法,organization_code_check.py来实现校验组织机构代码需求:

# -*- coding: utf-8 -*-import string
CODEMAP = string.digits + string.ascii_uppercase # 用数字与大写字母拼接成CODEMAP,每个字符的index就是代表该字符的值
WMap = [3, 7, 9, 10, 5, 8, 4, 2] # 加权因子列表def get_C9(bref):# C9=11-MOD(∑Ci(i=1→8)×Wi,11)# 通过本地计算出C9的值sum = 0for ind, i in enumerate(bref):Ci = CODEMAP.index(i)Wi = WMap[ind]sum += Ci * WiC9 = 11 - (sum % 11)if C9 == 10:C9 = 'X'elif C9 == 11:C9 = '0'return str(C9)def check_organizationcode(code):# 输入组织机构代码进行判断,如果正确,则输出'验证通过,组织机构代码证格式正确!',错误则返回错误原因ERROR = '组织机构代码证错误!'if '-' in code:bref, C9_check = code.split('-')else:bref = code[:-1]C9_check = code[-1:]if len(bref) != 8 or len(C9_check) != 1:return ERROR + '(本体或校验码长度不符合要求)'else:try:C9_right = get_C9(bref)except ValueError:return ERROR + '(本体错误)'if C9_check != C9_right:return ERROR + '(校验码错误)'else:return '验证通过,组织机构代码证格式正确!'if __name__ == '__main__':print check_organizationcode('WV0X1KYT-X')  # 正确print check_organizationcode('WV0X1KYT5')   # 正确print check_organizationcode('WV0X1KYT-5')  # 校验码错误print check_organizationcode('WV0X1K-5')    # 本体长度太短print check_organizationcode('WV0X1KYT-50') # 校验码长度太长print check_organizationcode('WV0X1KY@-5')  # 本体中有特殊字符

Python 组织机构代码证校验相关推荐

  1. 组织机构代码证号码校验

    (1)html部分 <div class="test4 txt-com"><input id="StoreAddTxt17" name=&qu ...

  2. python结合正则表达式及校验码生成算法校验:电话号码、营业执照、组织机构代码证、税务登记证、统一社会信用代码证、非盈利性企业登记证号码的函数

    #!/usr/bin/env python3 import re from datetime import datetimedef check_phone(phone):'''三大运营商和虚拟运营商的 ...

  3. git+pylint实现python提交代码格式校验

    环境:win10(64),python3.7.1,git2.7.2,pylint-2.3.1,git_pylint_commit_hook-2.5.1 以上为当期搭建所用到的版本,有异常时方便查找问题 ...

  4. 计算全国组织机构代码的校验码(C++)

    输入 全国组织机构代码的本体代码,由8位数字或大写拉丁字母组成. 输出 全国组织机构代码,本体代码后加连字符和校验码. C++实现代码 #include <iostream>int mai ...

  5. 【成立公司】5.营业执照和组织机构代码证

    办事地点 行政服务中心 所需资料 法人代表身份证复印件 取章回执单 花费金额 846元 办事经历 从办理登记业务到今天,正好一周时间,可以领营业执照了.早上9点来到行政服务中心的工商局窗口索取营业执照 ...

  6. JS实现统一社会信用代码的效验(组织机构代码效验)

    参考原文https://blog.csdn.net/hdhxby/article/details/56015370 部分错误,修改整合了下 想查询数据的,请点击:统一信用代码查询地址 查看效验规则点击 ...

  7. 区分统一社会信用代码、组织机构代码、注册号

    区分统一社会信用代码.组织机构代码.注册号 背景 2015年6月4日,国务院常务会议决定实施法人和其他组织统一社会信用代码制度,提升社会运行效率和信用.法人和其他组织统一社会信用代码相当于让法人和其他 ...

  8. 计算统一社会信用代码的校验码(Lua)

    输入 法人和其他组织统一社会信用代码的前16/17位 输出 检查登记管理部门代码(第1位)和机构类别代码(第2位)是否合法: 检查登记管理机关行政区划码(第3-8位)是否合法: 检查组织机构代码的本体 ...

  9. Python实现统一社会信用代码合法性校验

    Python实现统一社会信用代码合法性校验 1 统一代码的构成 1.1 结构 ​ 统一代码由十八位的阿拉伯数字或大写英文字母(不使用I.O.Z.S.V)组成,包括第1位登记管理部门代码.第2位机构类别 ...

最新文章

  1. 8786:方格取数 (多线程dp)
  2. SppNet 多尺度训练
  3. layui关闭表格编辑_告别复制粘贴,表格再多也能快速合并!
  4. 看完微软大神写的求平均值代码,我意识到自己还是 too young 了
  5. golang 结构体 slice 排序
  6. Mac 编译安装 Redis-3.2.3
  7. numpy教程:统计函数Statistics
  8. 七牛上传自有证书(crt格式证书转为pem格式)
  9. 火山PC加载DLL窗口案例教程
  10. 软件评测师教程简介(第二篇-测试技术)
  11. 正弦波及FFT变换py程序
  12. SIYI AK28 遥控器接收机的SBUS口与STM32通讯
  13. VirtuoZo:航摄影像的处理及拼接
  14. MATLAB写入文件的操作
  15. java pkcs8格式的私钥_RSA加密解密中pkcs1与pkcs8格式私钥互相转换
  16. excel手机版_这些Excel恢复神器,据说个个都很强,你用过吗?网友:很实用
  17. (3)DispatcherServlet与初始化主线
  18. 【第五章】零基础学Python实战练习(明日科技书配套)
  19. 查看python的版本号有 四种方案
  20. Oracle ASM磁盘组冗余机制(Failure group)

热门文章

  1. 4.15 使用渐变映射命令制作艺术效果 [原创Ps教程]
  2. Transition 调用方法分析
  3. 分区起始位置参数溢出_机械硬盘在4k对齐时勾选了一个主分区,没想到居然提示起始位置参数溢出~后来我不想要这个主分区了重新...
  4. 三节点大数据环境安装教程1
  5. 计算机专业简介自我介绍,计算机专业自我介绍
  6. Intel 处理器模型
  7. matlab设置图片名称,如何在matlab中批量修改图片名称
  8. moviepy音视频剪辑:颜色相关变换函数blackwhite、colorx、fadein/out、gamma_corr、invert_colors、lum_contrast、mask_color介绍
  9. [办公软件] Word文档和Excel文档的桌面图标有把锁怎么解决?
  10. KeyTweak(笔记本键盘设置工具) V2.20 中文版