python驗證身份證信息實例代碼
identity-card
驗證身份證號碼的正確性,不能僅僅通過正則表達式來驗證,我們都知道我國的身份證一共是18位,由十七位數(shù)字本體碼和一位校驗碼組成。
其排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位校驗碼。
- 地址碼 (身份證號碼前六位);表示編碼對象常住戶口所在縣(市、旗、區(qū))的行政區(qū)域劃分代碼,按GB/T2260的規(guī)定執(zhí)行。1-2位省、自治區(qū)、直轄市代碼; 3-4位地級市、盟、自治州代碼; 5-6位縣、縣級市、區(qū)代碼。
- 出生日期碼 (身份證號碼第七位到第十四位);表示編碼對象出生的年、月、日,按GB/T7408的規(guī)定執(zhí)行,年、月、日代碼之間不用分隔符。
- 順序碼 (身份證號碼第十五位到十七位);表示在同一地址碼所標識的區(qū)域范圍內(nèi),對同年、同月、同日出生的人編定的順序號,順序碼的奇數(shù)分配給男性,偶數(shù)分配給女性。
- 校驗碼(身份證號碼最后一位);是根據(jù)前面十七位數(shù)字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。如果某人的尾號是0-9,都不會出現(xiàn)X,但如果尾號是10,那么就得用X來代替,X是羅馬數(shù)字的10,用X來代替10,可以保證公民的身份證符合國家標準。
校驗碼計算步驟
十七位數(shù)字本體碼加權(quán)求和公式
S = Sum(Ai * Wi), i = 0, … , 16 ,先對前17位數(shù)字的權(quán)求和
Ai:表示第i位置上的身份證號碼數(shù)字值(0~9)
Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (表示第i位置上的加權(quán)因子)
計算模
Y = mod(S, 11)
根據(jù)模,查找得到對應的校驗碼
Y: 0 1 2 3 4 5 6 7 8 9 10
校驗碼: 1 0 X 9 8 7 6 5 4 3 2
對應的代碼校驗如下:
Java
public class IdentityCard{
int[] weight={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; //十七位數(shù)字本體碼權(quán)重
char[] valid={ '1','0','X','9','8','7','6','5','4','3','2'}; //mod11,對應校驗碼字符值
///card是除去最后一位前17位的號碼
public char getValidateCode(String card){
int sum=0;
int mode=0;
for(int i=0;i<card.length();i++){
sum=sum+Integer.parseInt(String.valueOf(card.charAt(i)))*weight[i];
}
mode=sum%11;
return valid[mode];
}
}
python
def get_id_card_verify_number(id_card): factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] check_code_list = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2] check_sum = sum([a * b for a, b in zip(factor, [int(a) for a in id_card[0:-1]])]) return check_code_list[check_sum % 11]

總體代碼(代碼地址:https://github.com/lucas234/identity-card ):
以上所述是小編給大家介紹的python驗證身份證信息的方法詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
django框架之cookie/session的使用示例(小結(jié))
這篇文章主要介紹了django框架之cookie/session的使用示例(小結(jié)),詳細的介紹了cookie和session技術(shù)的接口獲取等問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-10-10
python中k-means和k-means++原理及實現(xiàn)
本文主要介紹了python中k-means和k-means++原理及實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05
回歸預測分析python數(shù)據(jù)化運營線性回歸總結(jié)
本文主要介紹了python數(shù)據(jù)化運營中的線性回歸一般應用場景,常用方法,回歸實現(xiàn),回歸評估指標,效果可視化等,并采用了回歸預測分析的數(shù)據(jù)預測方法2021-08-08
python?open函數(shù)中newline參數(shù)實例詳解
newLine()方法可用于輸出一個換行字符"/n",下面這篇文章主要給大家介紹了關(guān)于python?open函數(shù)中newline參數(shù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-06-06
anaconda jupyter不能導入安裝的lightgbm解決方案
這篇文章主要介紹了anaconda jupyter不能導入安裝的lightgbm解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Django實現(xiàn)jquery select2帶搜索的下拉框
最近在開發(fā)一個web應用中需要用到帶搜索功能下拉框,本文實現(xiàn)Django實現(xiàn)jquery select2帶搜索的下拉框,感興趣的小伙伴們可以參考一下2021-06-06
在pandas中遍歷DataFrame行的實現(xiàn)方法
這篇文章主要介紹了在pandas中遍歷DataFrame行的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10

