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 相关文章推荐
用smtplib和email封装python发送邮件模块类分享
Feb 17 Python
python使用win32com库播放mp3文件的方法
May 30 Python
利用django如何解析用户上传的excel文件
Jul 24 Python
python的dataframe转换为多维矩阵的方法
Apr 11 Python
对python3中pathlib库的Path类的使用详解
Oct 14 Python
python生成以及打开json、csv和txt文件的实例
Nov 16 Python
python实现扫描局域网指定网段ip的方法
Apr 16 Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 Python
基于Python测试程序是否有错误
May 16 Python
Python新手学习函数默认参数设置
Jun 03 Python
pyecharts在数据可视化中的应用详解
Jun 08 Python
如何在 Matplotlib 中更改绘图背景的实现
Nov 26 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实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
php实现微信支付之企业付款
2018/05/30 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
javascript options属性集合操作代码
2009/12/28 Javascript
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
详解javascript遍历方式
2015/11/11 Javascript
javascript性能优化之事件委托实例详解
2015/12/12 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
python序列化与数据持久化实例详解
2019/12/20 Python
python中matplotlib实现随鼠标滑动自动标注代码
2020/04/23 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
公务员中国梦演讲稿
2014/08/19 职场文书
全国助残日活动总结
2015/05/11 职场文书
旅行社计调工作总结
2015/08/12 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL
基于Python实现射击小游戏的制作
2022/04/06 Python