python进行两个表格对比的方法


Posted in Python onJune 27, 2018

如下所示:

# -*- 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')

以上这篇python进行两个表格对比的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python常用模块介绍
Nov 21 Python
Python使用CMD模块更优雅的运行脚本
May 11 Python
Python安装使用命令行交互模块pexpect的基础教程
May 12 Python
更改Ubuntu默认python版本的两种方法python-&gt; Anaconda
Dec 18 Python
Python实现的爬虫功能代码
Jun 24 Python
Python读取YUV文件,并显示的方法
Dec 04 Python
Python3字符串encode与decode的讲解
Apr 02 Python
详解python 爬取12306验证码
May 10 Python
tensorflow 模型权重导出实例
Jan 24 Python
Python之变量类型和if判断方式
May 05 Python
keras.layer.input()用法说明
Jun 16 Python
Django serializer优化类视图的实现示例
Jul 16 Python
Python快速查找list中相同部分的方法
Jun 27 #Python
Python面向对象类的继承实例详解
Jun 27 #Python
Python简单计算给定某一年的某一天是星期几示例
Jun 27 #Python
Python查找第n个子串的技巧分享
Jun 27 #Python
python numpy 部分排序 寻找最大的前几个数的方法
Jun 27 #Python
获取python的list中含有重复值的index方法
Jun 27 #Python
Python 查找list中的某个元素的所有的下标方法
Jun 27 #Python
You might like
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
2016/12/27 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
jQuery 技巧小结
2010/04/02 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
js案例之鼠标跟随jquery版(实例讲解)
2017/07/21 jQuery
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
使用svg实现动态时钟效果
2018/07/17 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
Sanic框架安装与简单入门示例
2018/07/16 Python
对Python 检查文件名是否规范的实例详解
2019/06/10 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
入学申请自荐信范文
2014/02/26 职场文书
家居装修公司创业计划书范文
2014/03/20 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
庆七一晚会主持词
2015/06/30 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
靠谱的活动总结
2019/04/16 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
Vue vee-validate插件的简单使用
2021/06/22 Vue.js
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL