python身份證號
㈠ 如何用python設計一個通過身份證號判斷省份的程序
area={"11":"北京","12":"天津","13":"河北","14":"山西","15":"內蒙古","21":"遼寧","22":"吉林","23":"黑龍江","31":"上海","32":"江蘇","33":"浙江","34":"安徽","35":"福建","36":"江西","37":"山東","41":"河南","42":"湖北","43":"湖南","44":"廣東","45":"廣西","46":"海南","50":"重慶","51":"四川","52":"貴州","53":"雲南","54":"西藏","61":"陝西","62":"甘肅","63":"青海","64":"寧夏","65":"新疆","71":"台灣","81":"香港","82":"澳門","91":"國外"}
s=input('輸入身份證號碼:')
t=s[0]+s[1]
print(area[t])

㈡ python批量為身份證打碼
python批量為身份證打碼方法如下對身份證號碼中的日期用代替,=打碼數據.xlsxdf。根據查詢相關公開信息顯示,python批量為身份證打碼方法如下對身份證號碼中的日期用代替,=打碼數據.xlsxdf。GB116431999中有關公民身份號碼的規定,根據精密的計算公式計算出來的,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。
㈢ 用Python校驗身份證號碼真偽
#這個演算法都給了,應該比較簡單吧。我也很菜,隨意寫了一個。異常沒做,你可以自##己加一下。做一些驗證過濾。不知道隨機是不是真是隨意隨機,我沒有按照身份證規##則做隨機。是真的隨機了18位。。。如果你有規則,也可以自己寫一個。
importrandom
yushu=[xforxinrange(0,11)]
ma=['1','0','X','9','8','7','6','5','4','3','2','1']
defyanzheng(nid):
dicma=dict(zip(yushu,ma))
sum=0
forx,yinenumerate(nid[:-1]):
sum+=((2**(18-x-1))%11)*int(y)#17位對應系數相乘的和
ifnid[-1]==dicma[sum%11]:#校驗碼對照
return'%sTrue'%nid
else:
return'%sFalse'%nid
defreadfile(fname):
f=open(fname,'rb')
forlineinf.readlines():
printyanzheng(line.strip())
f.close()
defrandnum():
idstr=''
foriinrange(17):#前17位隨機
idstr+=str(random.randint(0,9))
idstr+=random.choice(ma)#最後一位從列表種隨意一個,因為有X
returnidstr
if__name__=="__main__":
nid=raw_input('PleaseenteryourID:')#用戶輸入ID,沒做任何驗證
printyanzheng(nid)#驗證身份證
readfile('id.txt')#從文件讀出來再驗證
printyanzheng(randnum())#隨機一個在驗證
㈣ 如何利用Python輸入身份證號碼,輸出後用*將出生日期覆蓋
#實驗用的身份證號碼是隨便亂輸的,如果需要增加一些其他功能,私信我
#這個不能識別生日的日期是否有異常(比如說不能識別日期是否大於31天)
try:
number = input('請輸入你的身份證號碼:')
int(number)#檢測是否全為數字
if len(number) != 18:
int('a')#手動異常
number = number[:6] + '*' * 8 + number[-4:]
print()
except:
print('你輸入的有異常!')
㈤ python中輸入身份證用-將日期連接起來
首先要輸入年月日,輸入數據,一般用input函數Python中有datetime的模塊。
._份證號第17位對應性別,偶數—_奇數----男。
18位身份證號碼:第7、8、9、10位為出生年份(四位數),第11、第12位為出生月份,第13、14位代表出生日期。
㈥ python用身份證號判斷性別
身份證號最後一位代表的就是性別,如果你要想判斷的話看一下,最後一位一般除了X之外都是身份證,最後一位可以代表性別。
㈦ python身份證號換成***
最近工作中剛好要清洗一批客戶數據,涉及到身份證號碼15位和18位的轉換,特意研究了下,在這里分享下。
身份證號碼的構成
既然談到了身份證轉換,那就需要先了解下證件號碼的構成。
公民身份號碼是特徵組合碼,由 十七位數字本體碼 和 一位數字校驗碼 組成;
排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。
六位數字地址碼:表示編碼對象常住戶口所在縣(市、旗、區)的行政區劃代碼,按GB/T 2260 的規定執行。
八位數字出生日期碼:表示編碼對象出生的年、月、日,按 GB/T 7408 的規定執行。年、月、日代碼之間不用分隔符。某人出生日期為 1995年08月12日,其出生日期碼為 19950812。
三位順序碼:表示在同一地址碼所標識的區域范圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。
一位校驗碼:校驗碼按照 ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。
校驗碼計算方法
1、將前面的身份證號碼17位數分別乘以不同的系數。從第一位到第十七位的系數分別為: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;
2、將這17位數字和系數相乘的結果相加;
3、用加出來和除以11,看余數是多少;
4、余數只可能有0 1 2 3 4 5 6 7 8 9 10這11個數字。其分別對應的最後一位身份證的號碼為 1 0 X 9 8 7 6 5 4 3 2 ;
5、通過上面得知如果余數是2,就會在身份證的第18位數字上出現羅馬數字的X。
解決思路
15位轉18位:即身份證號碼的前六位數字+ '19' + 身份證第六位以後的數字 + 校驗碼
(不要問我為什麼加19這種白痴(´⊙ω⊙`) @?¥&?的問題,當然是因為只有19世紀的人才可能擁有15位的身份證號啦)
校驗碼計算方法就更簡單了,將這17位數字和系數相乘的結果相加除以11匹配余數對應的號碼即可。
注意:代碼中我用了幾個變數,在這里拆解講解下。
Ai: 表示第i位置上的身份證號碼數字值 Wi: 表示第i位置上的加權因子 Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
十七位數字本體碼加權求和公式: S = Sum(AiWi), i = 0, … , 16 ,先對前17位數字的權求和
計算模 Y = mod(S, 11)
通過模得到對應的校驗碼
Y: 0 1 2 3 4 5 6 7 8 9 10
校驗碼: 1 0 X 9 8 7 6 5 4 3 2
OK,分析的差不多了,直接看代碼。
怎麼用代碼實現?
# encoding: utf-8
"""
CREATED ON 19-11-05
@AUTHOR: XUSL
"""
WI = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1, ]
VI = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, ]
DEF GET_VERITY(EIGHTEEN_CARD):
"""
:PARAM EIGHTEEN_CARD:
:RETURN:
"""
AI = []
REMAINING = ''
IF LEN(EIGHTEEN_CARD) == 18:
EIGHTEEN_CARD = EIGHTEEN_CARD[0:-1]
IF LEN(EIGHTEEN_CARD) == 17:
S = 0
FOR I IN EIGHTEEN_CARD:
AI.APPEND(INT(I))
FOR I IN RANGE(17):
S = S + WI[I] * AI[I]
REMAINING = S % 11
RETURN 'X' IF REMAINING == 2 ELSE STR(VI[REMAINING])
DEF UP_TO_EIGHTEEN(FIFTEEN_CARD):
"""
15位轉18位
:PARAM FIFTEEN_CARD:
:RETURN:
"""
EIGHTEEN_CARD = FIFTEEN_CARD[0:6] + '19' + FIFTEEN_CARD[6:15]
RETURN EIGHTEEN_CARD + GET_VERITY(EIGHTEEN_CARD)
DEF DOWN_TO_FIFTEEN(EIGHTEEN_CARD):
"""
18位轉15位
:PARAM EIGHTEEN_CARD:
:RETURN:
"""
RETURN EIGHTEEN_CARD[0:6] + EIGHTEEN_CARD[8:17]
IF __NAME__ == '__MAIN__':
# 15位轉18位
CARD_1 = UP_TO_EIGHTEEN('632123820927051')
PRINT(CARD_1)
# 18位轉15位
CARD_2 = DOWN_TO_FIFTEEN('410125199908222000')
PRINT(CARD_2)
當然,這只是個小功能,主要還是想分享下代碼,如果有同樣的處理可以直接用。
總結
以上所述是小編給大家介紹的使用Python完成15位18位身份證的互轉功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
㈧ python身份證號可不可以結婚
身份證是可以查出結婚的。但公民個人查詢的,一般不予查詢。但雙方在向民政局提出登記結婚時,一方可以查詢到另一方的情況。本人查詢本人或者配偶的,則可以查詢,如果配偶在異地,並且分居時間長,查詢了解一下可以;這種情況可能要提供本人身份證和結婚證才可查詢。個人信息的處理包括個人信息的收集、存儲、使用、加工、傳輸、提供、公開等。
法律依據:《中華人民共和國民法典》 第一千零三十五條 處理個人信息的,應當遵循合法、正當、必要原則,不得過度處理,並符合下列條件:(一)徵得該自然人或者其監護人同意,但是法律、行政法規另有規定的除外;(二)公開處理信息的規則;(三)明示處理信息的目的、方式和范圍;(四)不違反法律、行政法規的規定和雙方的約定。個人信息的處理包括個人信息的收集、存儲、使用、加工、傳輸、提供、公開等。
㈨ 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}'
。
㈩ Python2.7輸入一個身份號,計算該身份證號對應的年齡並輸出
#-*-coding:utf-8-*-
#filename:test.py
importtime
defaction(number):
current=int(time.strftime("%Y"))
year=int(number[6:10])
print("你今年{}歲了".format(current-year))
action(input('輸入你的身份證號 '))
