本文目錄一覽:
- 1、用Python校驗身份證號碼真偽
- 2、python3.8.3 控制台提示輸出身份證號,並輸出接入的數據的位數?
- 3、Python怎麼用正則表達式匹配全省身份證號前六位
- 4、如何利用Python輸入身份證號碼,輸出後用*將出生日期覆蓋?
用Python校驗身份證號碼真偽
#這個算法都給了,應該比較簡單吧。我也很菜,隨意寫了一個。異常沒做,你可以自##己加一下。做一些驗證過濾。不知道隨機是不是真是隨意隨機,我沒有按照身份證規##則做隨機。是真的隨機了18位。。。 如果你有規則,也可以自己寫一個。
import random
yushu=[x for x in range(0,11)]
ma=[‘1′,’0′,’X’,’9′,’8′,’7′,’6′,’5′,’4′,’3′,’2′,’1′]
def yanzheng(nid):
dicma=dict(zip(yushu,ma))
sum=0
for x,y in enumerate(nid[:-1]):
sum+=((2**(18-x-1))%11)*int(y) #17位對應係數相乘的和
if nid[-1]==dicma[sum%11]: #校驗碼對照
return ‘%s True’%nid
else:
return ‘%s False’%nid
def readfile(fname):
f=open(fname,’rb’)
for line in f.readlines():
print yanzheng(line.strip())
f.close()
def randnum():
idstr=”
for i in range(17): #前17位隨機
idstr+=str(random.randint(0,9))
idstr+=random.choice(ma) #最後一位從列表種隨意一個,因為有X
return idstr
if __name__==”__main__”:
nid=raw_input(‘Please enter your ID: ‘) #用戶輸入ID,沒做任何驗證
print yanzheng(nid) #驗證身份證
readfile(‘id.txt’) #從文件讀出來 再驗證
print yanzheng(randnum()) #隨機一個 在驗證
python3.8.3 控制台提示輸出身份證號,並輸出接入的數據的位數?
a=input(“身份證號碼:”)
print(len(a))
#len()這個方法的作用是檢測數據的長度。
Python怎麼用正則表達式匹配全省身份證號前六位
導入re模塊:
import re
idCardPattern = r’44\d{15}(\d|x)’ #比如廣東省身份證以44開頭
str1 = ‘4405821988110812180x’ #要比較的字符串
m=re.compile(idCardPattern).match(str1)
print(“Match: ” + str(m.group()))
以上求示例在Python3
下測試通過,可匹配18位號碼。只要找前6位號碼改為:idCardPattern
=
r’44\d{4}’
。
如何利用Python輸入身份證號碼,輸出後用*將出生日期覆蓋?
#實驗用的身份證號碼是隨便亂輸的,如果需要增加一些其他功能,私信我
#這個不能識別生日的日期是否有異常(比如說不能識別日期是否大於31天)
try:
number = input(‘請輸入你的身份證號碼:’)
int(number)#檢測是否全為數字
if len(number) != 18:
int(‘a’)#手動異常
number = number[:6] + ‘*’ * 8 + number[-4:]
print()
except:
print(‘你輸入的有異常!’)
原創文章,作者:LHVMI,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/330539.html