国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Python數(shù)據(jù)處理在“侵犯公民信息”案司法取證中的運(yùn)用研究

2022-03-30 10:16金波
科學(xué)與信息化 2022年6期
關(guān)鍵詞:身份證號字符串手機(jī)號

金波

中浦鑒云(上海)信息技術(shù)有限公司司法鑒定所 上海 200080

1 “侵犯公民信息”案司法取證常規(guī)方法及使用Python數(shù)據(jù)處理的意義

近年來隨著手機(jī)及互聯(lián)網(wǎng)技術(shù)普及運(yùn)用,海量信息唾手可得。為有效保護(hù)公民隱私、保障金融環(huán)境健康運(yùn)行,銀行賬號、電子支付、網(wǎng)上交易等與居民息息相關(guān)的日常事務(wù)均采用了以手機(jī)號和身份證號等具有唯一性特征的公民信息進(jìn)行實(shí)名認(rèn)證[1]。同時,倒賣公民信息,用以實(shí)施詐騙、洗錢等違法犯罪活動也層出不窮。在“侵犯公民信息”類案件的司法訴訟過程中,需要對涉案檢材中的公民信息的數(shù)量進(jìn)行統(tǒng)計(jì)排重,以檢測檢材中具有多少不重復(fù)的公民信息作為定罪量刑提供有效依據(jù)。

此類案件的數(shù)據(jù)處理通常是在各表格欄位格式一致的情況下對檢材中含有公民信息的數(shù)據(jù)表格進(jìn)行合并,再對身份證號或手機(jī)號進(jìn)行統(tǒng)計(jì)排重。傳統(tǒng)處理方法是以Excel為工具對表格進(jìn)行手工處理,表格數(shù)量稍大則利用“方方格子”等插件進(jìn)行半自動化處理。由于Excel效率低下、且不能超過百萬行的局限,遇到巨量數(shù)據(jù)時,則須將表格導(dǎo)入到關(guān)系型數(shù)據(jù)庫,再以結(jié)構(gòu)化查詢語言進(jìn)行統(tǒng)計(jì)[2]。

本文通過實(shí)例,闡述了在處理大量的欄位格式不一致的電子表格的情況下,克服手工處理的弊端,解決Excel和傳統(tǒng)關(guān)系型數(shù)據(jù)庫處理能力的瓶頸,運(yùn)用Python數(shù)據(jù)處理模塊高效、精準(zhǔn)地解決公民信息統(tǒng)計(jì)排重的難題。

2 使用Python數(shù)據(jù)處理所使用的材料與處理步驟

2.1 檢材

含有公民信息清單的Excel文件共12555個,總大小約為2.2GB。

2.2 檢測設(shè)備

2.2.1 硬件:PC 1臺:CPU Intel i9 8核心,內(nèi)存 32G,硬盤500G SSD

2.2.2 軟件。

2.2.2.1 操作系統(tǒng):Windows 10 專業(yè)版 20H1。

2.2.2.2 Python 3.8:含模塊os,datetime,xlrd,re,pandas。

2.3 處理步驟

2.3.1 利用os模塊遍歷檢材中含有Excel文件的目錄樹,并記錄其中每個文件名。

2.3.2 利用xlrd模塊讀取每個Excel文件中所有工作表的內(nèi)容,對其中的每一行數(shù)據(jù)以字符串“::”作為分隔標(biāo)識進(jìn)行橫向合并,合并結(jié)果定義為源數(shù)據(jù)行的特征字符串字段,全部結(jié)果行合并寫入一個文本文件中。

2.3.3 利用Python中l(wèi)ist和set兩種數(shù)據(jù)類型,對合并結(jié)果的文本文件中的特征字符串字段進(jìn)行初步排重,先將所有特征字符串讀入list中,再對其以set進(jìn)行處理,處理后每一行都是唯一的,重復(fù)的特征字符串只保留一行,以提高后續(xù)處理的效率[3]。

2.3.4 利用re模塊,編輯正則表達(dá)式對初步排重結(jié)果中的特征字符串進(jìn)行判斷,按定義規(guī)則識別手機(jī)號和身份證號,并將其單獨(dú)提取為號碼字段,分別按身份證號和手機(jī)號保存為兩個含格式的文本文件。文件中每行的格式為:列1.號碼字段;列2.特征字符串。若在同一特征字符串中提取到多個手機(jī)號或身份證號,則對應(yīng)分為多行,每行中只保存其中一個號碼。

2.3.5 在pandas模塊的dataframe類中,使用drop_duplicates方法對識別到的號碼進(jìn)行統(tǒng)計(jì)排重,對重復(fù)號碼只取排在最先的一行。

3 異常情況的處理思路及核心代碼展示和處理結(jié)果

3.1 觀察到的異常情況

3.1.1 損壞且無法打開的Excel文件。檢驗(yàn)過程中提取恢復(fù)到檢材中所有的xls和xlsx文件均被識別為Excel文件,但其中部分以“$”開頭的文件名為恢復(fù)到的因打開Excel文件而產(chǎn)生的臨時緩存文件,在非正常退出時未被及時清除,通常此類文件無法打開,因此記錄在日志文件中,以便進(jìn)一步追溯核實(shí)[4]。

3.1.2 公民信息記錄特征-格式。

3.1.2.1 郵政、快遞的收發(fā)信息。格式:發(fā)貨人姓名、電話、地址、發(fā)貨時間、收貨人姓名、電話、地址。

3.1.2.2 客戶服務(wù)系統(tǒng)實(shí)名認(rèn)證的通訊錄。格式:姓名,證件號,電話號1,電話號2,電話號3……(電話號數(shù)量不一)。

3.1.2.3 銀行系統(tǒng)的客戶實(shí)名信息。格式:姓名,電話號,證件號。

3.1.2.4 政府機(jī)構(gòu)通訊錄。格式:省,市,區(qū)縣鎮(zhèn),機(jī)構(gòu)名稱,負(fù)責(zé)人及聯(lián)系電話(合并在同一單元格)。

3.1.2.5 金融系統(tǒng)的核銷記錄。格式:姓名、委托批次、手別、本月任務(wù)類型、賬戶類型、賬戶分包、來源、城市、單位電話號碼、性別、住宅電話、手機(jī)號碼……(多達(dá)150余列)。

3.1.3 公民信息記錄特征-異常情況。

3.1.3.1 在一個單元格中填塞入整個通訊錄名單。因此需將該單元格中的內(nèi)容處理為多行數(shù)據(jù),而非粗暴的合并為1行。

3.1.3.2 由于Excel會將18位身份證號當(dāng)作數(shù)字處理,由于限制,前15位數(shù)字可正常顯示,后3位會被處理為000,因此有些單元格會在身份證號前加“‘”號,強(qiáng)制將單元格當(dāng)作文本格式處理。有些手機(jī)號被當(dāng)成浮點(diǎn)數(shù)處理,例如:19990909555.0,保留小數(shù)點(diǎn)后n位的數(shù)字形式。因此區(qū)分“‘”和“.”符號也需納入考慮。

3.1.3.3 容易混淆的身份證號為手機(jī)號的情況。例:身份證號31010219990909555X,其中19990909555易被誤識別為手機(jī)號。因此不能將該號碼既識別為身份證號,又識別為手機(jī)號。

3.2 公民信息的定義及作業(yè)思路

唯一性是定義的核心。身份證號人手一份且只有一份,與他人不重復(fù),是最佳的界定唯一性的特征[5]。其次為手機(jī)號,手機(jī)號也不重復(fù),注冊時需與身份證掛鉤,已被納入實(shí)名認(rèn)證的特征之一,缺點(diǎn)是一人可以有多個號碼,可做參考。為避免同名同姓的發(fā)生概率高,以及同一住址可能會有多人居住的情況,因此姓名、地址不宜作為唯一性的特征用以區(qū)別。

因此,以身份證號(手機(jī)號為參考)區(qū)分唯一性。將所有數(shù)據(jù)的每一行合并為保留分隔形式的特征字符串,在特征字符串中識別提取符合身份證號(手機(jī)號)特征的號碼,最后對所有提取到的號碼進(jìn)行排序去重。

3.3 特征識別的規(guī)則及正則表達(dá)式

3.3.1 身份證號。18位身份證號生成規(guī)則由國標(biāo)GB 11643-1999《公民身份號碼》定義,由一系列特征碼組合而成,前17位數(shù)字為本體碼和最后1位則是校驗(yàn)碼。本體碼依照先后次序?yàn)椋?位地址碼,由各省市地方的標(biāo)準(zhǔn)代碼轉(zhuǎn)換而來;8位出生日期碼,分別為年份4位月份2位和日期2位;3位序列編碼,其含義為出生當(dāng)日的出生順序及性別;1位校驗(yàn)碼,由前17位通過一定算法計(jì)算而來的,校驗(yàn)碼為0…9和X共11種。18位和15位的共同特征是:在特定位置有6位日期碼,分別為年年月月日日,其長度是固定的。

3.3.2 身份證號碼特征識別的正則表達(dá)式。正則表達(dá)式:(?

該表達(dá)式用來識別18身份證號,即:18位連續(xù)數(shù)字或17位連續(xù)數(shù)字后跟X,第7位起為2位世紀(jì)號18、19或20,后跟2位任意數(shù)字,第11位起為2位月份即01-12,第13位起為日期即01-31。以零寬斷言(?

3.3.3 手機(jī)號。手機(jī)號編碼相對較為簡單,其特征為11位連續(xù)數(shù)字,第一位為數(shù)字1,第二位為3-9的任一數(shù)字,不可為0、1、2。但手機(jī)號前有時會被加上86以區(qū)分國別,或加0作為長途撥號的便捷方式,因此需加以考慮和區(qū)分。

3.3.4 手機(jī)號碼特征識別的正則表達(dá)式。正則表達(dá)式:(?

該表達(dá)式用來識別11位手機(jī)號,即:開頭可以為86或0,后跟11位數(shù)字,其中第一位為1,第二位為3-9的任一數(shù)字,后跟9位任意數(shù)字。以零寬斷言(?

3.4 Python的運(yùn)用

3.4.1 Python的優(yōu)點(diǎn)。其次,Python開發(fā)語言的執(zhí)行效率雖并不在最理想狀態(tài),但可以看到因?yàn)橥ㄟ^lists和sets等數(shù)據(jù)變量處理數(shù)據(jù),Python進(jìn)程會占用到5-10G的內(nèi)存,在硬件內(nèi)存充足的情況下,統(tǒng)計(jì)排序去重等操作均在內(nèi)存中完成。這避免了關(guān)系型數(shù)據(jù)庫為提高Cache Hit Rate減少磁盤讀寫而做的各種復(fù)雜的參數(shù)調(diào)整工作。

3.4.2 os模塊。os模塊用來遍歷檢材中含有Excel文件的目錄樹,并記錄其中每個文件名。代碼如下:

3.4.4 lists和sets數(shù)據(jù)類型。python中有l(wèi)ists(列表)和sets(集合)兩種數(shù)據(jù)類型,其表現(xiàn)形式均由元素組成的清單,list以[]形式表示,而sets以()表示,以“,”分隔的元素。但sets與lists不同的是,list的元素可以重復(fù),而sets不可以。通過set()方法將List的內(nèi)容去重,轉(zhuǎn)換為set。代碼如下:

3.4.5 re模塊。re模塊用來使用正則表達(dá)式在對象字符串中識別提取符合正則模式的內(nèi)容。此處理步驟為檢驗(yàn)檢測工作的核心。代碼如下:

3.4.6 pandas模塊。在pandas模塊的dataframe類中,通過使用drop_duplicates方法對“號碼,特征字符串”中的號碼字段進(jìn)行排重,同時保留第一行特征字符串。代碼如下:

3.5 檢驗(yàn)檢測結(jié)果

在檢驗(yàn)設(shè)備硬件上,對檢材中含有公民信息清單的12,555個Excel文件應(yīng)用上述代碼功能進(jìn)行統(tǒng)計(jì)排重,檢驗(yàn)檢測到可讀取的Excel文件11,202個,無法讀取的為1,353個。在可讀取的Excel文件中,檢測到10,121,012條記錄,經(jīng)統(tǒng)計(jì)排重后獲得手機(jī)號2,230,034條,身份證號2,338,503條。檢驗(yàn)檢測過程總時長為14分鐘。經(jīng)抽樣核對,精確度達(dá)到99.99%。

相比之下,若按平均每個文件花5min的人工處理時間,由1人處理,需要56010min(近131個工作日),且無法保障結(jié)果的精確度。對比情況見下表:

表1 python數(shù)據(jù)處理與人工處理的對比

4 結(jié)束語

綜上所述,本文通過研究Python編程語言中數(shù)據(jù)結(jié)構(gòu)及模塊應(yīng)用的特點(diǎn),結(jié)合對巨量涉及公民信息的Excel工作簿文件中記錄特征的觀察,在對公民信息統(tǒng)計(jì)去重的司法鑒定工作實(shí)踐中,編寫代碼,建立了一套高效準(zhǔn)確的合并、識別、統(tǒng)計(jì)、去重的方法,擺脫了對巨量Excel工作表進(jìn)行人工處理的繁重勞動,為法庭科學(xué)提供了科學(xué)客觀且有效的證據(jù),可為相關(guān)司法鑒定實(shí)踐提供參考。

猜你喜歡
身份證號字符串手機(jī)號
基于文本挖掘的語詞典研究
鉆天猴的手機(jī)號
手機(jī)號的秘密
作品賞析(4)
老師情
作品賞析(3)
神回復(fù)
SQL server 2008中的常見的字符串處理函數(shù)
倍增法之后綴數(shù)組解決重復(fù)子串的問題
最簡單的排序算法(續(xù))