python-古い身分証明書番号から新しい身分証明書番号に変更(15ビットから18ビット)

1394 ワード

【問題の説明】
古い版の身分証明書の番号は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)})