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函数参数*args**kwargs用法实例
Dec 04 Python
Python聚类算法之DBSACN实例分析
Nov 20 Python
全面了解Python环境配置及项目建立
Jun 30 Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
Jun 28 Python
python实现随机加减法生成器
Feb 24 Python
python实现简单俄罗斯方块
Mar 13 Python
500行python代码实现飞机大战
Apr 24 Python
matplotlib 画双轴子图无法显示x轴的解决方法
Jul 27 Python
python 实现超级玛丽游戏
Nov 25 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 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
融入意大利的咖啡文化
2021/03/03 咖啡文化
php调用mysql存储过程
2007/02/14 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
2011/05/04 PHP
php实现的debug log日志操作类实例
2016/07/12 PHP
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
JavaScript内存泄漏的处理方式
2017/11/20 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
深入剖析Node.js cluster模块
2018/05/23 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
python模拟鼠标拖动操作的方法
2015/03/11 Python
python标准算法实现数组全排列的方法
2015/03/17 Python
Python中使用partial改变方法默认参数实例
2015/04/28 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
解决Python使用列表副本的问题
2019/12/19 Python
基于python检查矩阵计算结果
2020/05/21 Python
python模块如何查看
2020/06/16 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
网络编辑职责
2014/03/01 职场文书
初中班主任评语
2014/04/24 职场文书
环保志愿者活动方案
2014/08/14 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
大学推普周活动总结
2015/05/07 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
Golang并发工具Singleflight
2022/05/06 Golang