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访问sqlserver示例
Feb 10 Python
跟老齐学Python之集成开发环境(IDE)
Sep 12 Python
Python中使用logging模块打印log日志详解
Apr 05 Python
Python二分查找详解
Sep 13 Python
教大家使用Python SqlAlchemy
Feb 12 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
Python3基于sax解析xml操作示例
May 22 Python
Python3.x爬虫下载网页图片的实例讲解
May 22 Python
python将回车作为输入内容的实例
Jun 23 Python
python数字类型math库原理解析
Mar 02 Python
python 基于opencv 绘制图像轮廓
Dec 11 Python
Python图像处理之图像拼接
Apr 28 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
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
jquery 3D球状导航的文章分类
2010/07/06 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
jquery取消选择select下拉框示例代码
2014/02/22 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
vue将单页面改造成多页面应用的方法
2018/11/25 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
uni-app如何页面传参数的几种方法总结
2020/04/28 Javascript
python多重继承实例
2014/10/11 Python
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
Python Requests 基础入门
2016/04/07 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
机电专业大学生求职信
2013/10/04 职场文书
创伤外科专业推荐信范文
2013/11/19 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
婚礼父母致辞
2015/07/28 职场文书