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自动生成文章
Dec 25 Python
Python中动态创建类实例的方法
Mar 24 Python
Python实现网站注册验证码生成类
Jun 08 Python
基于DataFrame筛选数据与loc的用法详解
May 18 Python
python中join()方法介绍
Oct 11 Python
解决pycharm 误删掉项目文件的处理方法
Oct 22 Python
分析经典Python开发工程师面试题
Apr 08 Python
pandas中的series数据类型详解
Jul 06 Python
Python-接口开发入门解析
Aug 01 Python
python 使用opencv 把视频分割成图片示例
Dec 12 Python
使用IPython或Spyder将省略号表示的内容完整输出
Apr 20 Python
aws 通过boto3 python脚本打pach的实现方法
May 10 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
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
php中的mongodb select常用操作代码示例
2014/09/06 PHP
php在linux下检测mysql同步状态的方法
2015/01/15 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
javascript生成大小写字母
2015/07/03 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
2017/10/26 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
浅谈Python的文件类型
2016/05/30 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
Python数据结构dict常用操作代码实例
2020/03/12 Python
浅析Python __name__ 是什么
2020/07/07 Python
Django中template for如何使用方法
2021/01/31 Python
车辆维修工自我评价怎么写
2013/09/20 职场文书
在校生党员自我评价
2013/09/25 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
党课培训心得体会
2014/09/02 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
2015年试用期自我评价范文
2015/03/10 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
Python Django 后台管理之后台模型属性详解
2021/04/25 Python
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers