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 相关文章推荐
使用PDB模式调试Python程序介绍
Apr 05 Python
Python的Flask框架应用调用Redis队列数据的方法
Jun 06 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
Python如何为图片添加水印
Nov 25 Python
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
Python+request+unittest实现接口测试框架集成实例
Mar 16 Python
python中单下划线_的常见用法总结
Jul 10 Python
用uWSGI和Nginx部署Flask项目的方法示例
May 05 Python
使用Python的Turtle库绘制森林的实例
Dec 18 Python
Python 解析pymysql模块操作数据库的方法
Feb 18 Python
解决python打开https出现certificate verify failed的问题
Sep 03 Python
Python调用Redis的示例代码
Nov 24 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
重置版宣传动画
2020/04/09 魔兽争霸
PHP判断指定时间段的2个方法
2014/03/14 PHP
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
2007/03/27 Javascript
Jquery实战_读书笔记1—选择jQuery
2010/01/22 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
JS逆序遍历实现代码
2014/12/02 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
微信小程序实现手势图案锁屏功能
2018/01/30 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
js实现聊天对话框
2020/02/08 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
python自带的http模块详解
2016/11/06 Python
Python实现常见的回文字符串算法
2018/11/14 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
python编写简单端口扫描器
2019/09/04 Python
python tkinter基本属性详解
2019/09/16 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
介绍一下linux的文件系统
2015/10/06 面试题
成人大专生实习期的自我评价
2013/10/02 职场文书
个人简历自我评价
2014/02/02 职场文书
触摸春天教学反思
2014/02/03 职场文书
五五普法心得体会
2014/09/04 职场文书
大二学年个人总结
2015/03/03 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书