最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python的身份證號(hào)碼自動(dòng)生成程序

 更新時(shí)間:2014年08月15日 15:12:55   投稿:mdxy-dxy  
今天收到一個(gè)小需求:需要一個(gè)自動(dòng)生成身份證號(hào)碼的小程序。近期用python較多,因此打算用python實(shí)現(xiàn)

需求細(xì)化:

1.身份證必須能夠通過身份證校驗(yàn)程序。

2.通過查詢,發(fā)現(xiàn)身份證號(hào)碼是有國家標(biāo)準(zhǔn)的,標(biāo)準(zhǔn)號(hào)為 GB 11643-1999 可以從百度下載到這個(gè)文檔

下載:GB11643-1999sfz(jb51.net).rar

現(xiàn)行身份證號(hào)為18位,分別為6位地址碼,8位生日,3位順序碼,一位校驗(yàn)碼。具體例子可見下圖。

 

  前六位也是國家標(biāo)準(zhǔn),GB2260-2007。吐槽一下,國標(biāo)竟然沒有一個(gè)網(wǎng)站供全面檢索和免費(fèi)下載。。。還好國家統(tǒng)計(jì)局有這些公開數(shù)據(jù)。可以從統(tǒng)計(jì)數(shù)據(jù)-》統(tǒng)計(jì)標(biāo)準(zhǔn)-》行政區(qū)劃代碼頁面內(nèi)找到最新數(shù)據(jù):http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201401/t20140116_501070.html (這個(gè)網(wǎng)頁上的數(shù)據(jù)可能會(huì)舊)

出生年月日是8位

順序碼是3位,男生末尾為基數(shù),女生末尾為偶數(shù)。

最后一位是校驗(yàn)碼。校驗(yàn)算法其實(shí)后面有很多數(shù)學(xué)道理,這里給出最簡單的公式:

前17位數(shù)字每一位有一個(gè)權(quán)重值

將第i位上的權(quán)重值記作Wi,Wi的值為 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

將身份證第i位的數(shù)字記作Ai

則使用下列公式算出一個(gè)數(shù)

S= Sum(Ai*Wi) mod 11 ------------- Sum(Ai*Wi) 取11的模。

這樣S的取值如下表:

對(duì)每一個(gè)S做一個(gè)映射 Y,這樣就有如下的表

S:0 1 2 3 4 5 6 7 8 9 10
Y:1 0 X 9 8 7 6 5 4 3 2

Y就是最終的校驗(yàn)碼。

原型實(shí)現(xiàn)過程:

1.獲取區(qū)域規(guī)劃碼的list,并讀入一個(gè)dictionary的list中。dictionary結(jié)構(gòu)如下:

{"state":河北省,"city":滄州市,"district":運(yùn)河區(qū),"code":130903}

丑陋的原型如下: 

def getdistrictcode():
  with open('districtcode') as file:
    data = file.read()
  districtlist = data.split('\n')
  global codelist
  codelist = []
  for node in districtlist:
    #print node
    if node[10:11] != ' ':
      state = node[10:].strip()
    if node[10:11]==' 'and node[12:13]!=' ':
      city = node[12:].strip()
    if node[10:11] == ' 'and node[12:13]==' ':
      district = node[14:].strip()
      code = node[0:6]
      codelist.append({"state":state,"city":city,"district":district,"code":code})

上部你得到了一個(gè)codelist,里邊有所有的區(qū)號(hào)了。

下面是生成身份證號(hào)的原型,基本上是隨機(jī)生成

def gennerator():
  id = codelist[random.randint(0,len(codelist))]['code'] #地區(qū)項(xiàng)
  id = id + str(random.randint(1930,2013)) #年份項(xiàng)
  da = date.today()+timedelta(days=random.randint(1,366)) #月份和日期項(xiàng)
  id = id + da.strftime('%m%d')
  id = id+ str(random.randint(100,300))#,順序號(hào)簡單處理

  i = 0
  count = 0
  weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] #權(quán)重項(xiàng)
  checkcode ={'0':'1','1':'0','2':'X','3':'9','4':'8','5':'7','6':'6','7':'5','8':'5','9':'3','10':'2'} #校驗(yàn)碼映射
  for i in range(0,len(id)):
    count = count +int(id[i])*weight[i]
  id = id + checkcode[str(count%11)] #算出校驗(yàn)碼
  return id

原型用到了python的兩個(gè)標(biāo)準(zhǔn)庫

from datetime import date
from datetime import timedelta

這樣就能初步滿足需要了,后續(xù)可以根據(jù)要就對(duì)工具進(jìn)行細(xì)化。

btw,其實(shí),正在開發(fā)一個(gè)測試數(shù)據(jù)生成的工具集,近期爭取開源。有任何具體需求可以提給我。有想一起做的同學(xué)也大大的歡迎:)

相關(guān)文章

  • pytorch  網(wǎng)絡(luò)參數(shù) weight bias 初始化詳解

    pytorch 網(wǎng)絡(luò)參數(shù) weight bias 初始化詳解

    這篇文章主要介紹了pytorch 網(wǎng)絡(luò)參數(shù) weight bias 初始化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python使用TensorFlow讀取和批處理CSV文件

    python使用TensorFlow讀取和批處理CSV文件

    本文旨在給大家使用 TensorFlow 庫讀取 CSV 文件,并將其數(shù)據(jù)以批次的形式進(jìn)行處理和展示,通過該實(shí)驗(yàn),我們希望掌握 TensorFlow 中 tf.data.TextLineDataset 的使用方法,以及如何解析 CSV 數(shù)據(jù)并進(jìn)行批量處理,需要的朋友可以參考下
    2025-03-03
  • pycharm 使用心得(一)安裝和首次使用

    pycharm 使用心得(一)安裝和首次使用

    PyCharm 是我用過的python編輯器中,比較順手的一個(gè)。而且可以跨平臺(tái),在macos和windows下面都可以用,這點(diǎn)比較好。
    2014-06-06
  • selenium + python 獲取table數(shù)據(jù)的示例講解

    selenium + python 獲取table數(shù)據(jù)的示例講解

    今天小編就為大家分享一篇selenium + python 獲取table數(shù)據(jù)的示例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python中引用與復(fù)制用法實(shí)例分析

    python中引用與復(fù)制用法實(shí)例分析

    這篇文章主要介紹了python中引用與復(fù)制用法,以實(shí)例形式詳細(xì)分析了python中引用與復(fù)制的功能與相關(guān)使用技巧,需要的朋友可以參考下
    2015-06-06
  • Python:Numpy 求平均向量的實(shí)例

    Python:Numpy 求平均向量的實(shí)例

    今天小編就為大家分享一篇Python:Numpy 求平均向量的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 深入分析python數(shù)據(jù)挖掘 Json結(jié)構(gòu)分析

    深入分析python數(shù)據(jù)挖掘 Json結(jié)構(gòu)分析

    這篇文章通過實(shí)例給大家分析總結(jié)了python數(shù)據(jù)挖掘以及Json結(jié)構(gòu)分析的相關(guān)知識(shí)點(diǎn),對(duì)此有興趣的朋友參考下。
    2018-04-04
  • PyTorch中torch.save()的用法和應(yīng)用小結(jié)

    PyTorch中torch.save()的用法和應(yīng)用小結(jié)

    本文主要介紹了PyTorch中torch.save()的用法和應(yīng)用小結(jié),torch.save()的主要作用就是將PyTorch對(duì)象保存到磁盤上,下面就來具體介紹一下,感興趣的可以了解一下
    2024-03-03
  • 關(guān)于pandas.DataFrame的類SQL操作

    關(guān)于pandas.DataFrame的類SQL操作

    這篇文章主要介紹了關(guān)于pandas.DataFrame的類SQL操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,
    2023-08-08
  • 使用Scrapy框架爬取網(wǎng)頁并保存到Mysql的實(shí)現(xiàn)

    使用Scrapy框架爬取網(wǎng)頁并保存到Mysql的實(shí)現(xiàn)

    本文主要介紹了使用Scrapy框架爬取網(wǎng)頁并保存到Mysql的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論

山丹县| 十堰市| 柳河县| 濮阳市| 桦川县| 濮阳市| 阜新市| 松溪县| 双辽市| 全州县| 威信县| 乌拉特前旗| 镇江市| 周宁县| 罗城| 昌邑市| 大名县| 宝丰县| 永仁县| 仙桃市| 中西区| 基隆市| 邹城市| 婺源县| 玛多县| 泽库县| 岐山县| 永寿县| 长白| 绥芬河市| 定安县| 江口县| 利津县| 红桥区| 中卫市| 许昌县| 唐海县| 德清县| 泸水县| 肇东市| 平南县|