python進(jìn)行兩個(gè)表格對(duì)比的方法
更新時(shí)間:2018年06月27日 14:10:01 作者:黑面狐
今天小編就為大家分享一篇python進(jìn)行兩個(gè)表格對(duì)比的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
如下所示:
# -*- coding:utf-8 -*-
import xlrd
import sys
import re
import json
dict1={}
dict2={}
mylist=[u'系統(tǒng)運(yùn)維管理',u'安全管理機(jī)構(gòu)',u'安全管理制度',u'人員安全管理',u'網(wǎng)絡(luò)安全',u'物理安全',u'網(wǎng)絡(luò)安全',u'主機(jī)安全',u'應(yīng)用安全',u"網(wǎng)絡(luò)安全",u"主機(jī)安全",u"主機(jī)安全",u'系統(tǒng)建設(shè)管理']
def check():
data=xlrd.open_workbook('test.xls')
for i in range(0,13):
print u"第%s個(gè)表格"%(i+1)
print mylist[i]
print "-"*60
try:
table=data.sheets()[i]
except IndexError,e:
break
nrows=table.nrows
count=1
if i<5:
m=10
else:
m=16
for j in range(m,nrows):
cell_1=table.cell(j,2).value
#print cell_1,
cell_2=table.cell(j,3).value
nu=re.split(r'\)',cell_2)
num=re.split(r'\)',nu[0])
if num is not None:
#print num[0],
pass
else:
print u"沒(méi)有標(biāo)記序號(hào)"
try:
if j<nrows:
if table.cell(j,2).value==table.cell(j+1,2).value:
count+=1
else:
print u"檢查項(xiàng)【%s】共有【%s】項(xiàng)"%(table.cell(j,2).value,count)
key=mylist[i]+table.cell(j,2).value
dict1[key]=count
count=1
else:
count+=1
print u"檢查項(xiàng)【%s】共有【%s】項(xiàng)"%(table.cell(j,2).value,count)
key=mylist[i]+table.cell(j,2).value
dict1[key]=count
except IndexError,e:
#count+=1
print u"檢查項(xiàng)【%s】共有【%s】項(xiàng)"%(table.cell(j,2).value,count)
key=mylist[i]+table.cell(j,2).value
dict1[key]=count
print "-"*60
print json.dumps(dict1, encoding='UTF-8', ensure_ascii=False)
print u"完成excel表格讀取-Thanks"
def ASGcheck(filename):
data=xlrd.open_workbook(filename)
table=data.sheets()[0]
print "-"*60
nrows=table.nrows
count=1
for j in range(1,nrows):
cell_1=table.cell(j,2).value
#print cell_1,
cell_2=table.cell(j,3).value
nu=re.split(r'\)',cell_2)
num=re.split(r'\)',nu[0])
if num is not None:
#print num[0],
pass
else:
print u"沒(méi)有標(biāo)記序號(hào)"
try:
if j<nrows:
if table.cell(j,3).value==table.cell(j+1,3).value:
count+=1
else:
print u"安全層面【%s】檢查項(xiàng)【%s】共有【%s】項(xiàng)"%(table.cell(j,2).value,table.cell(j,3).value,count)
key=table.cell(j,2).value+table.cell(j,3).value
dict2[key]=count
count=1
else:
count+=1
print u"安全層面【%s】檢查項(xiàng)【%s】共有【%s】項(xiàng)"%(table.cell(j,2).value,table.cell(j,3).value,count)
key=table.cell(j,2).value+table.cell(j,3).value
dict2[key]=count
except IndexError,e:
#count+=1
print u"安全層面【%s】檢查項(xiàng)【%s】共有【%s】項(xiàng)"%(table.cell(j,2).value,table.cell(j,3).value,count)
key=table.cell(j,2).value+table.cell(j,3).value
dict2[key]=count
#print json.dumps(dict2, encoding='UTF-8', ensure_ascii=False)
print "-"*60
def standard():
choiceA=raw_input(u"請(qǐng)輸入A的等級(jí):A2,A3,A4")
choiceS=raw_input(u"請(qǐng)輸入S的等級(jí):S2,S3,S4")
choiceG=raw_input(u"請(qǐng)輸入G的等級(jí):G2,G3,G4")
Aname=str(choiceA)+".xlsx"
Sname=str(choiceS)+".xlsx"
Gname=str(choiceG)+".xlsx"
check()
def compare():
print "*"*60
for key in dict2:
try:
if dict2[key]!=dict1[key]:
print u"存在異常項(xiàng)"
print u"從程序中導(dǎo)出的檢查項(xiàng)【%s】共有%s項(xiàng)"%(key,json.dumps(dict1[key], encoding='UTF-8', ensure_ascii=False))
print u"從分支查詢(xún)的檢查項(xiàng)【%s】共有%s項(xiàng)"%(key,json.dumps(dict2[key], encoding='UTF-8', ensure_ascii=False))
else:
pass
except KeyError,e:
print u"分支中的檢查項(xiàng)【%s】共有%s項(xiàng)"%(key,json.dumps(dict2[key], encoding='UTF-8', ensure_ascii=False)),
print u"程序中沒(méi)有查詢(xún)到該項(xiàng)"
#比較分支結(jié)果和程序?qū)С龅慕Y(jié)果
ASGcheck(Aname)
compare()
ASGcheck(Sname)
compare()
ASGcheck(Gname)
compare()
standard()
#ASGcheck('S3.xlsx')
以上這篇python進(jìn)行兩個(gè)表格對(duì)比的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳細(xì)介紹python類(lèi)及類(lèi)的用法
前面我們介紹了類(lèi)的創(chuàng)建及面向?qū)ο蟮娜筇匦?本篇將詳細(xì)介紹Python 類(lèi)的成員,成員修飾符,類(lèi)的特殊成員.需要的朋友可以參考下2021-05-05
Python3.6.0+opencv3.3.0人臉檢測(cè)示例
這篇文章主要為大家詳細(xì)介紹了Python3.6.0+opencv3.3.0人臉檢測(cè)示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Python Web框架Flask信號(hào)機(jī)制(signals)介紹
這篇文章主要介紹了Python Web框架Flask信號(hào)機(jī)制(signals)介紹,本文介紹Flask的信號(hào)機(jī)制,講述信號(hào)的用途,并給出創(chuàng)建信號(hào)、訂閱信號(hào)、發(fā)送信號(hào)的方法,需要的朋友可以參考下2015-01-01
粗暴解決CUDA out of memory的問(wèn)題
這篇文章主要介紹了粗暴解決CUDA out of memory的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
pygame播放視頻并實(shí)現(xiàn)音視頻同步的解決方案
本篇提供了pygame播放視頻的兩個(gè)方案,第一個(gè)方案是網(wǎng)上找的現(xiàn)成的,第二個(gè)方案則是參考了opencv(主流方案)自己逆向思維做的,還未經(jīng)過(guò)實(shí)際驗(yàn)證,感興趣的朋友跟隨小編一起看看吧2023-11-11
Python?自動(dòng)控制原理?control的詳細(xì)解說(shuō)
這篇文章主要介紹了Python自動(dòng)控制原理control的詳細(xì)解說(shuō),文章圍繞主題展開(kāi)對(duì)Python?control的介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07
深入探討Python中的內(nèi)置類(lèi)屬性`__repr__`
在Python中,__repr__是一個(gè)特殊的內(nèi)置類(lèi)屬性,用于定義類(lèi)的字符串表示形式,本文將深入探討__repr__的作用、用法以及一些實(shí)際應(yīng)用場(chǎng)景,希望對(duì)大家有所幫助2023-12-12

