python-古い身分証明書番号から新しい身分証明書番号に変更(15ビットから18ビット)
1394 ワード
【問題の説明】
古い版の身分証明書の番号は15位で、一部の政府のウェブサイトに登録されているのは古い版の番号で、15位で、更新されていないので、手動で18位に更新する必要があります.
【解決策】
古い版の身分証明書の番号は15位で、一部の政府のウェブサイトに登録されているのは古い版の番号で、15位で、更新されていないので、手動で18位に更新する必要があります.
【解決策】
import numpy as np
def id_corrected(id_card):
"""
15 18
:1-6 ——》
7-12 yymmdd——》 yyyymmdd ——》 17
——》 11 i——》 list, list[i]
17 + ——》 18
"""
try:
year =int(id_card[6:8])
year_now = int(dt.datetime.now().strftime('%Y'))-2000
if year > year_now:
id_card_temp = id_card[0:6]+'19'+id_card[6:] #
else:
id_card_temp = id_card[0:6]+'20'+id_card[6:] #
a =np.array(list(map(int, id_card_temp)))
b = np.array((7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2))
last_number_temp = np.dot(a,b)%11
check_code_list = ("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2")
check_code = check_code_list[last_number_temp]
id_number =id_card_temp+ str(check_code)
return id_number
except Exception as e:
param=json.dumps({"id_card":id_card})
raise Exception({"msg":" , : id_corrected, : "+param+", : "+str(e)})