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

python批量生成身份證號(hào)到Excel的兩種方法實(shí)例

 更新時(shí)間:2021年01月14日 11:34:32   作者:有風(fēng)南來(lái)  
這篇文章主要給大家介紹了關(guān)于python批量生成身份證號(hào)到Excel的兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

身份證號(hào)碼的編排規(guī)則

前1、2位數(shù)字表示:所在省份的代碼;

第3、4位數(shù)字表示:所在城市的代碼;

第5、6位數(shù)字表示:所在區(qū)縣的代碼;

第7~14位數(shù)字表示:出生年、月、日;

第15、16位數(shù)字表示:所在地的派出所的代碼;

第17位數(shù)字表示性別:奇數(shù)表示男性,偶數(shù)表示女性;

第18位數(shù)字是校檢碼,計(jì)算方法如下:

(1)將前面的身份證號(hào)碼17位數(shù)分別乘以不同的系數(shù)。從第一位到第十七位的系數(shù)分別為:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。

(2)將這17位數(shù)字和系數(shù)相乘的結(jié)果相加。

(3)用加出來(lái)和除以11,取余數(shù)。

(4)余數(shù)只可能有0-1-2-3-4-5-6-7-8-9-10這11個(gè)數(shù)字。其分別對(duì)應(yīng)的最后一位身份證的號(hào)碼為1-0-X -9-8-7-6-5-4-3-2。(即余數(shù)0對(duì)應(yīng)1,余數(shù)1對(duì)應(yīng)0,余數(shù)2對(duì)應(yīng)X…)

第一種方法:網(wǎng)頁(yè)爬取身份證前六位

import urllib.request
from bs4 import BeautifulSoup
import re
import random
import time
import xlwt

# 通過(guò)爬取網(wǎng)頁(yè)獲取到身份證前六位
url = 'http://www.qucha.net/shenfenzheng/city.htm'
headers = {
 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36'
}
request = urllib.request.Request(url, headers=headers) # 獲取url的網(wǎng)頁(yè)源碼
response = urllib.request.urlopen(request)
html = response.read()
soup = BeautifulSoup(html, 'lxml')
strarr = []
for info in soup.find_all('td', valign='top'): # <td valign = "top"></td>中的內(nèi)容
 pattern = re.compile(r'\d{6}') # 正則表達(dá)式,找6個(gè)整數(shù)
 pre = re.findall(pattern, info.text) # 在info中查找符合表達(dá)式的內(nèi)容

def year():
 '''生成年份'''
 # 從1960開(kāi)始算,now-18直接過(guò)濾掉小于18歲出生的年份
 now = time.strftime('%Y')
 second = random.randint(1960, int(now) - 18)
 return second


def month():
 '''生成月份'''
 three = str(random.randint(1, 12))
 mon = three.zfill(2)# zfill() 方法返回指定長(zhǎng)度的字符串,原字符串右對(duì)齊,前面填充0
 return mon


def day(year, month):
 '''生成日期'''
 four = str(getDay(year, month))
 days = four.zfill(2)
 return days


def getDay(year, month):
 '''根據(jù)傳來(lái)的年月份返回日期'''
 # 1,3,5,7,8,10,12月為31天,4,6,9,11為30天,2月閏年為28天,其余為29天
 aday = 0
 if month in (1, 3, 5, 7, 8, 10, 12):
 aday = random.randint(1, 31)
 elif month in (4, 6, 9, 11):
 aday = random.randint(1, 30)
 else:
 # 即為2月判斷是否為閏年
 if ((year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)):
 aday = random.randint(1, 28)
 else:
 aday = random.randint(1, 29)
 return aday


def randoms():
 '''生成身份證后三位'''
 ran = str(random.randint(1, 999))
 five = ran.zfill(3)
 return five


# 前17位身份證
def ID():
 first = random.choice(pre)
 second = year()
 three = month()
 four = day(second, three)
 five = randoms()
 # 前17位身份證
 ID = str(first) + str(second) + three + four + five
 return ID

def ID_last():
 ID_17 = ID()
 lid = list(map(int, ID_17)) # 將字符串?dāng)?shù)組轉(zhuǎn)為int列表
 weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] # 權(quán)重項(xiàng)
 temp = 0
 for i in range(17):
 temp += lid[i]*weight[i]
 checkcode = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']# 校驗(yàn)碼映射
 ID_last = checkcode[temp%11]
 return ID_last

# 創(chuàng)建一個(gè)workbook 設(shè)置編碼
workbook = xlwt.Workbook(encoding='utf-8')
# 創(chuàng)建一個(gè)worksheet
worksheet = workbook.add_sheet('IDcard')
# 設(shè)置單元格寬度
worksheet.col(0).width = 5555

for i in range(100): #設(shè)置生成身份證號(hào)的數(shù)量
 IDcard = ID() + ID_last()
 worksheet.write(i, 0, IDcard)
 # 寫入excel,參數(shù)對(duì)應(yīng) 行, 列, 值
workbook.save('IDcard.xlsx')
# 運(yùn)行后 會(huì)在當(dāng)前目錄生成一個(gè)IDcard.xlsx

第二種方法:身份證前六位從本地excel中取

如果自己有這么一份全國(guó)身份證前六位的數(shù)據(jù)且存在excel中,可以直接跳到第二步。沒(méi)有的話,下面是爬取全國(guó)身份證前六位,并保存到自己本地的代碼實(shí)現(xiàn),建議跑一遍保存下來(lái),誰(shuí)知道這個(gè)爬取的地址哪天作者刪除文件了呢,到時(shí)第一種方法就不適用了,得換地址處理等。(另外,爬取下來(lái)到excel中自己還能再處理一下前六位,因?yàn)槲疫@個(gè)爬取包括“440000 廣東省”這種,不知道身份證有沒(méi)有前六位是這種的,我知道的好像沒(méi)有,我爬下來(lái)的前六位沒(méi)有刪掉這些,如下圖紅框)

# 通過(guò)爬取網(wǎng)頁(yè)獲取到身份證前六位并保存到本地excel中
import urllib.request
from bs4 import BeautifulSoup
import re
import xlwt

# 通過(guò)爬取網(wǎng)頁(yè)獲取到身份證前六位
url = 'http://www.qucha.net/shenfenzheng/city.htm'
headers = {
 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36'
}
request = urllib.request.Request(url, headers=headers) # 獲取url的網(wǎng)頁(yè)源碼
response = urllib.request.urlopen(request)
html = response.read()
soup = BeautifulSoup(html, 'lxml')
strarr = []
for info in soup.find_all('td', valign='top'): # <td valign = "top"></td>中的內(nèi)容
 pattern = re.compile(r'\d{6}') # 正則表達(dá)式,找6個(gè)整數(shù)
 pre = re.findall(pattern, info.text) # 在info中查找符合表達(dá)式的內(nèi)容,保存在pre中

# 創(chuàng)建一個(gè)workbook 設(shè)置編碼
workbook = xlwt.Workbook(encoding='utf-8')
# 創(chuàng)建一個(gè)worksheet
worksheet = workbook.add_sheet('ID_pre_six')
# 設(shè)置單元格寬度
worksheet.col(0).width = 3333

for i in range(len(pre)):
 worksheet.write(i, 0, pre[i])
 # 寫入excel,參數(shù)對(duì)應(yīng) 行, 列, 值
workbook.save('ID_pre_six.xlsx')
# 運(yùn)行后 會(huì)在當(dāng)前目錄生成一個(gè)ID_pre_six.xlsx

導(dǎo)入本地excel數(shù)據(jù)(身份證前六位)保存為字符串?dāng)?shù)組,然后生成身份證號(hào)碼

import random
import time
import xlwt
import pandas as pd

# 不把第1行作為列名,讀取Excel那就沒(méi)有列名,需增加參數(shù):header=None
# 第一個(gè)參數(shù)為身份證前六位的excel數(shù)據(jù)路徑
df = pd.read_excel('E:\Code\Python\ID_pre_six.xlsx', sheet_name='ID_pre_six', header=None)
# 獲取最大行
nrows = df.shape[0]
pre = []
for iRow in range(nrows):
 # 將表中第一列數(shù)據(jù)寫入pre數(shù)組中
 pre.append(df.iloc[iRow, 0])

def year():
 '''生成年份'''
 # 從1960開(kāi)始算,now-18直接過(guò)濾掉小于18歲出生的年份
 now = time.strftime('%Y')
 second = random.randint(1960, int(now) - 18)
 return second


def month():
 '''生成月份'''
 three = str(random.randint(1, 12))
 mon = three.zfill(2)# zfill() 方法返回指定長(zhǎng)度的字符串,原字符串右對(duì)齊,前面填充0
 return mon


def day(year, month):
 '''生成日期'''
 four = str(getDay(year, month))
 days = four.zfill(2)
 return days


def getDay(year, month):
 '''根據(jù)傳來(lái)的年月份返回日期'''
 # 1,3,5,7,8,10,12月為31天,4,6,9,11為30天,2月閏年為28天,其余為29天
 aday = 0
 if month in (1, 3, 5, 7, 8, 10, 12):
 aday = random.randint(1, 31)
 elif month in (4, 6, 9, 11):
 aday = random.randint(1, 30)
 else:
 # 即為2月判斷是否為閏年
 if ((year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)):
 aday = random.randint(1, 28)
 else:
 aday = random.randint(1, 29)
 return aday


def randoms():
 '''生成身份證后三位'''
 ran = str(random.randint(1, 999))
 five = ran.zfill(3)
 return five


# 前17位身份證
def ID():
 first = random.choice(pre)
 second = year()
 three = month()
 four = day(second, three)
 five = randoms()
 # 前17位身份證
 ID = str(first) + str(second) + three + four + five
 return ID

def ID_last():
 ID_17 = ID()
 lid = list(map(int, ID_17)) # 將字符串?dāng)?shù)組轉(zhuǎn)為int列表
 weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] # 權(quán)重項(xiàng)
 temp = 0
 for i in range(17):
 temp += lid[i]*weight[i]
 checkcode = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']# 校驗(yàn)碼映射
 ID_last = checkcode[temp%11]
 return ID_last

# 創(chuàng)建一個(gè)workbook 設(shè)置編碼
workbook = xlwt.Workbook(encoding='utf-8')
# 創(chuàng)建一個(gè)worksheet
worksheet = workbook.add_sheet('IDcard')
# 設(shè)置單元格寬度
worksheet.col(0).width = 5555

for i in range(100):# 設(shè)置生成數(shù)量
 IDcard = ID() + ID_last()
 worksheet.write(i, 0, IDcard)
 # 寫入excel,參數(shù)對(duì)應(yīng) 行, 列, 值
workbook.save('IDcard.xlsx')
# 運(yùn)行后 會(huì)在當(dāng)前目錄生成一個(gè)IDcard.xlsx

PS:爬取網(wǎng)頁(yè)中哪個(gè)tag里的內(nèi)容,可以瀏覽器頁(yè)面,右鍵->查看網(wǎng)頁(yè)源代碼,如下圖,我需要的內(nèi)容都含在方框那個(gè)tag里:

參考:

http://m.fzitv.net/article/204089.htm

總結(jié)

到此這篇關(guān)于python批量生成身份證號(hào)到Excel的兩種方法的文章就介紹到這了,更多相關(guān)python批量生成身份證號(hào)到Excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python使用遞歸解決全排列數(shù)字示例

    python使用遞歸解決全排列數(shù)字示例

    有1,2,3,4這4個(gè)數(shù)字,能組成多少個(gè)互不相同且無(wú)重復(fù)數(shù)字的三位數(shù),下面是二種解決示例,需要的朋友可以參考下
    2014-02-02
  • wxPython色環(huán)電阻計(jì)算器

    wxPython色環(huán)電阻計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了wxPython色環(huán)電阻計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python中TypeError:unhashable?type:'dict'錯(cuò)誤的解決辦法

    Python中TypeError:unhashable?type:'dict'錯(cuò)誤的解決辦法

    這篇文章主要給大家介紹了關(guān)于Python中TypeError:unhashable?type:'dict'錯(cuò)誤的解決辦法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Win10搭建Pyspark2.4.4+Pycharm開(kāi)發(fā)環(huán)境的圖文教程(親測(cè))

    Win10搭建Pyspark2.4.4+Pycharm開(kāi)發(fā)環(huán)境的圖文教程(親測(cè))

    本文主要介紹了Win10搭建Pyspark2.4.4+Pycharm開(kāi)發(fā)環(huán)境的圖文教程(親測(cè)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python中的urlparse()方法使用

    python中的urlparse()方法使用

    這篇文章主要介紹了python中的urlparse()方法使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Python generator生成器和yield表達(dá)式詳解

    Python generator生成器和yield表達(dá)式詳解

    這篇文章主要介紹了Python generator生成器和yield表達(dá)式詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Windows10下 python3.7 安裝 facenet的教程

    Windows10下 python3.7 安裝 facenet的教程

    這篇文章主要介紹了Windows10 python3.7 安裝 facenet的教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Keras 切換后端方式(Theano和TensorFlow)

    Keras 切換后端方式(Theano和TensorFlow)

    這篇文章主要介紹了Keras 切換后端方式(Theano和TensorFlow),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • pyqt5 從本地選擇圖片 并顯示在label上的實(shí)例

    pyqt5 從本地選擇圖片 并顯示在label上的實(shí)例

    今天小編就為大家分享一篇pyqt5 從本地選擇圖片 并顯示在label上的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • Python原始字符串與Unicode字符串操作符用法實(shí)例分析

    Python原始字符串與Unicode字符串操作符用法實(shí)例分析

    這篇文章主要介紹了Python原始字符串與Unicode字符串操作符用法,結(jié)合實(shí)例形式分析了Python針對(duì)原始字符與Unicode字符的操作符用法,需要的朋友可以參考下
    2017-07-07

最新評(píng)論

呼和浩特市| 阿坝县| 北流市| 五华县| 岳阳县| 西林县| 琼海市| 贺州市| 丹凤县| 莎车县| 房产| 禄丰县| 平安县| 买车| 万山特区| 宜宾县| 通城县| 白城市| 沈阳市| 香格里拉县| 友谊县| 台东市| 大关县| 驻马店市| 逊克县| 腾冲县| 乌兰察布市| 望都县| 弥勒县| 石城县| 昌都县| 克什克腾旗| 石景山区| 连平县| 江山市| 昆山市| 上思县| 黔南| 克什克腾旗| 平塘县| 永平县|