200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python 校验身份证号码 并输出对应省市县生日 demo

python 校验身份证号码 并输出对应省市县生日 demo

时间:2018-12-07 08:10:04

相关推荐

python 校验身份证号码 并输出对应省市县生日 demo

1.需求

2.代码实现

# _*_coding:utf-8_*_import redef validateIdCard(idCard):weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']sum = 0for i in range(len(idCard)):sum += int(idCard[i]) * weight[i]return check_code[sum % 11]def passIdCard(idCard):idCardRegParttern = pile('^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$')res = re.match(idCardRegParttern, idCard)return res != Nonedef findArea(areaCode):# 1. 获取区域情况areaList = []with open('./area.js', 'rb') as file:temp = file.readline()while temp:areaList.append(temp.decode('utf-8'))temp = file.readline()# 2. 找地区provinceCode = areaCode[0:2]+"0000"cityCode = areaCode[0:4]+"00"provinceVal = ''cityVal = ''areaVal = ''for item in areaList:if item.startswith(provinceCode):provinceVal = item.split(",")[1].strip("\n").strip("\r")if item.startswith(cityCode):cityVal = item.split(",")[1].strip("\n").strip("\r")+'市'if item.startswith(areaCode):areaVal = item.split(",")[1].strip("\n").strip("\r")return provinceVal+cityVal+areaValdef judge(idCard):if (validateIdCard(idCard[:17]) == idCard[17]):print('校验通过!')else:print('校验失败!')returnif int(idCard[16]) % 2 == 0:print('性别:女')else:print('性别:男')print('生日:{}年{}月{}日'.format(idCard[6:10], idCard[10:12], idCard[12:14]))print('籍贯:{}'.format(findArea(idCard[0:6])))def main():# idCard = "230182198012251659"# if passIdCard(idCard) == False:#print("fail")# else:#judge(idCard)while True:idCard = input('请输入身份证号码:')if passIdCard(idCard) == False:print("校验失败!")else:judge(idCard)if __name__ == '__main__':main()

注:省市文件较大,放百度云了

链接:百度网盘 请输入提取码

提取码:xe9i

3.实现效果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。