python进行两个表格对比的方法
作者:黑面狐 发布时间:2021-12-15 20:31:57
标签:python,表格
如下所示:
# -*- coding:utf-8 -*-
import xlrd
import sys
import re
import json
dict1={}
dict2={}
mylist=[u'系统运维管理',u'安全管理机构',u'安全管理制度',u'人员安全管理',u'网络安全',u'物理安全',u'网络安全',u'主机安全',u'应用安全',u"网络安全",u"主机安全",u"主机安全",u'系统建设管理']
def check():
data=xlrd.open_workbook('test.xls')
for i in range(0,13):
print u"第%s个表格"%(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"没有标记序号"
try:
if j<nrows:
if table.cell(j,2).value==table.cell(j+1,2).value:
count+=1
else:
print u"检查项【%s】共有【%s】项"%(table.cell(j,2).value,count)
key=mylist[i]+table.cell(j,2).value
dict1[key]=count
count=1
else:
count+=1
print u"检查项【%s】共有【%s】项"%(table.cell(j,2).value,count)
key=mylist[i]+table.cell(j,2).value
dict1[key]=count
except IndexError,e:
#count+=1
print u"检查项【%s】共有【%s】项"%(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"没有标记序号"
try:
if j<nrows:
if table.cell(j,3).value==table.cell(j+1,3).value:
count+=1
else:
print u"安全层面【%s】检查项【%s】共有【%s】项"%(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】检查项【%s】共有【%s】项"%(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】检查项【%s】共有【%s】项"%(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"请输入A的等级:A2,A3,A4")
choiceS=raw_input(u"请输入S的等级:S2,S3,S4")
choiceG=raw_input(u"请输入G的等级: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"存在异常项"
print u"从程序中导出的检查项【%s】共有%s项"%(key,json.dumps(dict1[key], encoding='UTF-8', ensure_ascii=False))
print u"从分支查询的检查项【%s】共有%s项"%(key,json.dumps(dict2[key], encoding='UTF-8', ensure_ascii=False))
else:
pass
except KeyError,e:
print u"分支中的检查项【%s】共有%s项"%(key,json.dumps(dict2[key], encoding='UTF-8', ensure_ascii=False)),
print u"程序中没有查询到该项"
#比较分支结果和程序导出的结果
ASGcheck(Aname)
compare()
ASGcheck(Sname)
compare()
ASGcheck(Gname)
compare()
standard()
#ASGcheck('S3.xlsx')
来源:https://blog.csdn.net/qq1124794084/article/details/52863231
0
投稿
猜你喜欢
- 在本篇文章中,我们将介绍回归树及其基本数学原理,并从头开始使用Python实现一个完整的回归树模型。为了简单起见这里将使用递归来创建树节点,
- 网页布局中常有的一种情况就是网页主体部分分成一行两列;而在很多种情况下,设计师们常把左右两列的背景色设计成不同色彩,以实现内容块的明显区分;
- 而Easp类中提供了大量实用的ASP通用过程及方法,可以简化大部分的ASP操作。目前只提供了VBScript版,JScript版将来可能会提
- gchart是基于google图表API的jquery组件。使用gchart可以方便地生成强大的各种图表和报表。基于google图表接口的g
- 一、引用返回引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。不要用返回引用来增加性能,引擎足够聪明来自己进行优化。仅在有合理的技
- 在第一部分和第二部分中我们分别介绍了改善网站性能中页面内容和服务器的几条守则,除此之外,JavaScript和CSS也是我们页
- SQL触发器实例1 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一
- 停止mysql服务(以管理员身份,在cmd命令行下运行) net stop mysql或者在服务中停止mysql服务。使用 mysqld –
- 众所周知IE6不支持position:fixed,这个bug与IE6的双倍margin和不支持PNG透明等bug一样臭名昭著。前些天我做自己
- function commafyback(num) { var x = num.split(','); return par
- 本文中介绍了一个MySQL的存储过程,其中涉及Cursor的使用,示例如下:CREATE PROCEDURE `justifyGroupNu
- Pytorch torch.distributions库包介绍torch.distributions包包含可参数化的概率分布和采样函数。 这
- 问题你想使用一个简单的REST接口通过网络远程控制或访问你的应用程序,但是你又不想自己去安装一个完整的web框架。解决方案构建一个REST风
- 八月的UCDChina书友会主题是“信息分类和方法”,在会场中的内容是不足以简单的概述的,而这次交流至少对于分类、属性、关键词与Tag的定义
- 这篇文章主要介绍了Python统计时间内的并发数代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 在Microsoft SQL Server 2000中,用于数据存储的实用工具是数据库。数据库的物理表现是操作系统文件,即在物理上,一个数据
- 现象:在IE下,用JS修改p标签的innerHTML时,出"未知的运行时错误(unknown runtime error)&quo
- 本次小编向大家介绍的是根据用户的需求输入想爬取的内容及页数。主要步骤:1.提示用户输入爬取的内容及页码。2.根据用户输入,获取网址列表。3.
- PHP echo() 函数实例输出一些文本:<?php echo "Hello world!"; ?>定义和
- Codeigniter支持缓存技术,以达到最快的速度。尽管CI已经相当高效了,但是网页中的动态内容、主机的内存CPU和数据库读取速度等因素直