Python 组织机构代码证校验
全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成。
校验码按照以下公式计算:
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)html部分 <div class="test4 txt-com"><input id="StoreAddTxt17" name=&qu ...
- python结合正则表达式及校验码生成算法校验:电话号码、营业执照、组织机构代码证、税务登记证、统一社会信用代码证、非盈利性企业登记证号码的函数
#!/usr/bin/env python3 import re from datetime import datetimedef check_phone(phone):'''三大运营商和虚拟运营商的 ...
- git+pylint实现python提交代码格式校验
环境:win10(64),python3.7.1,git2.7.2,pylint-2.3.1,git_pylint_commit_hook-2.5.1 以上为当期搭建所用到的版本,有异常时方便查找问题 ...
- 计算全国组织机构代码的校验码(C++)
输入 全国组织机构代码的本体代码,由8位数字或大写拉丁字母组成. 输出 全国组织机构代码,本体代码后加连字符和校验码. C++实现代码 #include <iostream>int mai ...
- 【成立公司】5.营业执照和组织机构代码证
办事地点 行政服务中心 所需资料 法人代表身份证复印件 取章回执单 花费金额 846元 办事经历 从办理登记业务到今天,正好一周时间,可以领营业执照了.早上9点来到行政服务中心的工商局窗口索取营业执照 ...
- JS实现统一社会信用代码的效验(组织机构代码效验)
参考原文https://blog.csdn.net/hdhxby/article/details/56015370 部分错误,修改整合了下 想查询数据的,请点击:统一信用代码查询地址 查看效验规则点击 ...
- 区分统一社会信用代码、组织机构代码、注册号
区分统一社会信用代码.组织机构代码.注册号 背景 2015年6月4日,国务院常务会议决定实施法人和其他组织统一社会信用代码制度,提升社会运行效率和信用.法人和其他组织统一社会信用代码相当于让法人和其他 ...
- 计算统一社会信用代码的校验码(Lua)
输入 法人和其他组织统一社会信用代码的前16/17位 输出 检查登记管理部门代码(第1位)和机构类别代码(第2位)是否合法: 检查登记管理机关行政区划码(第3-8位)是否合法: 检查组织机构代码的本体 ...
- Python实现统一社会信用代码合法性校验
Python实现统一社会信用代码合法性校验 1 统一代码的构成 1.1 结构 统一代码由十八位的阿拉伯数字或大写英文字母(不使用I.O.Z.S.V)组成,包括第1位登记管理部门代码.第2位机构类别 ...
最新文章
- 8786:方格取数 (多线程dp)
- SppNet 多尺度训练
- layui关闭表格编辑_告别复制粘贴,表格再多也能快速合并!
- 看完微软大神写的求平均值代码,我意识到自己还是 too young 了
- golang 结构体 slice 排序
- Mac 编译安装 Redis-3.2.3
- numpy教程:统计函数Statistics
- 七牛上传自有证书(crt格式证书转为pem格式)
- 火山PC加载DLL窗口案例教程
- 软件评测师教程简介(第二篇-测试技术)
- 正弦波及FFT变换py程序
- SIYI AK28 遥控器接收机的SBUS口与STM32通讯
- VirtuoZo:航摄影像的处理及拼接
- MATLAB写入文件的操作
- java pkcs8格式的私钥_RSA加密解密中pkcs1与pkcs8格式私钥互相转换
- excel手机版_这些Excel恢复神器,据说个个都很强,你用过吗?网友:很实用
- (3)DispatcherServlet与初始化主线
- 【第五章】零基础学Python实战练习(明日科技书配套)
- 查看python的版本号有 四种方案
- Oracle ASM磁盘组冗余机制(Failure group)
热门文章
- 4.15 使用渐变映射命令制作艺术效果 [原创Ps教程]
- Transition 调用方法分析
- 分区起始位置参数溢出_机械硬盘在4k对齐时勾选了一个主分区,没想到居然提示起始位置参数溢出~后来我不想要这个主分区了重新...
- 三节点大数据环境安装教程1
- 计算机专业简介自我介绍,计算机专业自我介绍
- Intel 处理器模型
- matlab设置图片名称,如何在matlab中批量修改图片名称
- moviepy音视频剪辑:颜色相关变换函数blackwhite、colorx、fadein/out、gamma_corr、invert_colors、lum_contrast、mask_color介绍
- [办公软件] Word文档和Excel文档的桌面图标有把锁怎么解决?
- KeyTweak(笔记本键盘设置工具) V2.20 中文版