Python是一種高級(jí)編程語言,有著簡單易學(xué)、代碼可讀性高等優(yōu)點(diǎn),被廣泛應(yīng)用于各種領(lǐng)域。
身份證是一種重要的身份證明證件,對(duì)身份證號(hào)碼進(jìn)行校驗(yàn)是程序中常見的操作之一。Python中使用正則表達(dá)式對(duì)身份證號(hào)碼進(jìn)行校驗(yàn)十分方便。
import re
def check_idcard(idcard):
"""
校驗(yàn)身份證號(hào)碼
"""
if len(idcard) != 18:
return False
# 校驗(yàn)前17位是否是數(shù)字
if not re.match("^[1-9][0-9]{16}", idcard):
return False
# 計(jì)算校驗(yàn)碼
idcard_list = list(idcard)
idcard_weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
idcard_checkcode_dict = {0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', 7: '5', 8: '4', 9: '3', 10: '2'}
sum = 0
for i in range(17):
sum += int(idcard_list[i]) * idcard_weight[i]
idcard_checkcode = idcard_checkcode_dict[sum % 11]
# 判斷校驗(yàn)碼是否正確
if idcard_checkcode != idcard_list[17]:
return False
return True
上面的代碼實(shí)現(xiàn)了校驗(yàn)身份證號(hào)碼的功能,通過正則表達(dá)式驗(yàn)證前17位是否是數(shù)字,然后計(jì)算校驗(yàn)碼進(jìn)行校驗(yàn)。
使用這個(gè)函數(shù)判斷身份證號(hào)碼是否合法十分簡單:
idcard = '43068220000202202X'
if check_idcard(idcard):
print("身份證號(hào)碼合法")
else:
print("身份證號(hào)碼不合法")
上面的代碼將會(huì)輸出“身份證號(hào)碼合法”,因?yàn)?'43068220000202202X' 是一個(gè)合法的身份證號(hào)碼。