python手机_Python手机号码匹配
今天實戰(zhàn),從8000多個全國手機號碼中篩選出北京地區(qū)的手機號碼。
我們會學(xué)習(xí)python讀取excel和csv文件,對兩個文件數(shù)據(jù)對比。兩個數(shù)據(jù)文件均為隨機生成,文末為下載地址。
兩個數(shù)據(jù)文件其中numbers_virtual.csv是手機號碼表,segment_virtual.xlsx是號段表,用于標(biāo)示北京地區(qū)。 手機號碼編碼規(guī)則是前3位用于標(biāo)識運營商,如133表示電信,136表示移動,186表示聯(lián)通;手機號中4-7位標(biāo)識地區(qū)。
先打開兩個文件觀察一下:
Windows開始菜單–命令行中‘cmd’–‘jupyter notebook’–’File‘-’New Notebook’,這就完成了新建。因為我把這兩個數(shù)據(jù)文件放在D盤python文件夾下,所以需要先修改一下工作路徑:
cd d:\python
兩個文件先讀哪個?先理一下思路,對手機號碼切片,再在號段表里匹配看有沒有,所以我們先得有號段表——先讀號段表。python有專門的庫xlrd讀excel文件,就像csv文件一樣。
import xlrd
data = xlrd.open_workbook('segment_virtual.xlsx')
table = data.sheets()[0]
cols = table.col_values(0)
xlrd.open_workbook(‘segment_virtual.xlsx’)打開excel表格; data.sheets()[0]讀取其中的sheet,這里中括號里用了0表示是第一個sheet; table.col_values(0)用來讀取sheet里的列,我們?nèi)〉?列。如果想知道cols個什么類型,可用print打印,發(fā)現(xiàn)是unicode格式的列表。
接下來讀號碼表
users = []
import csv
with open('numbers_virtual.csv','rb') as f:
reader = csv.reader(f)
for i in reader:
users.append(i[0])
這里不過多解釋,和之前文章一樣。需要說明的是 users.append(i[0])這句,這里用了i[0],因為i是一個含有單元素的列表,所以我們用[0]把它取出來,再放到users這個列表里。
接下來做匹配,如果users里面的每個號碼自身第4-7位這個4位數(shù),在cols這個號段表里能找到,那么就打印這個號碼:
for number in users:
segment = number[3:7]
if segment in cols:
print number
這樣我們就從全國拿出了北京地區(qū)的用戶,同樣的方法還可以拿出北京地區(qū)移動用戶,這個留作練習(xí)。
兩個數(shù)據(jù)文件下載地址鏈接: 鏈接: http://pan.baidu.com/s/1qYw8CCO 密碼: zi4g
最后貼下隨機生成11位手機號碼的代碼:
def createPhone():
prelist=["130","131","132","133","134","135","136","137","138","139","147","150","151","152","153","155","156","157","158","159","186","187","188"]
return random.choice(prelist)+"".join(random.choice("0123456789") for i in range(8))
numbers = []
for i in range(100000):
numbers.append(createPhone())
總結(jié)
以上是生活随笔為你收集整理的python手机_Python手机号码匹配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 孙鑫java基础视频教程_孙鑫老师JAV
- 下一篇: python和labview的区别_测量