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获取电脑硬件信息及状态的实现方法
Aug 29 Python
Django框架中render_to_response()函数的使用方法
Jul 16 Python
PyQt5每天必学之带有标签的复选框
Apr 19 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
Python 处理文件的几种方式
Aug 23 Python
Django之使用内置函数和celery发邮件的方法示例
Sep 16 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 Python
python-web根据元素属性进行定位的方法
Dec 13 Python
python实现字典嵌套列表取值
Dec 16 Python
Python vtk读取并显示dicom文件示例
Jan 13 Python
Win10里python3创建虚拟环境的步骤
Jan 31 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
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
理解Javascript_06_理解对象的创建过程
2010/10/15 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
nuxt踩坑之Vuex状态树的模块方式使用详解
2019/09/06 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
Python中如何导入类示例详解
2019/04/17 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
2020/03/14 Python
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
元宵节主持词
2014/03/25 职场文书
四风问题对照检查材料
2014/09/22 职场文书
校长师德表现自我评价
2015/03/04 职场文书
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS