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冒泡排序简单实现方法
Jul 09 Python
详解Python中的元组与逻辑运算符
Oct 13 Python
Python与R语言的简要对比
Nov 14 Python
numpy concatenate数组拼接方法示例介绍
May 27 Python
解决pycharm安装第三方库失败的问题
May 09 Python
运行Python编写的程序方法实例
Oct 21 Python
python 实用工具状态机transitions
Nov 21 Python
python3中布局背景颜色代码分析
Dec 01 Python
PyCharm+Miniconda3安装配置教程详解
Feb 16 Python
Django如何与Ajax交互
Apr 29 Python
常用的Python代码调试工具总结
Jun 23 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 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站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
PHP 提取图片img标记中的任意属性的简单实例
2013/12/10 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
jQuery 性能优化手册 推荐
2010/02/23 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
详解javascript遍历方式
2015/11/11 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
2016/06/01 Javascript
vuex实现简易计数器
2016/10/27 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
jQuery实现菜单的显示和隐藏功能示例
2018/07/24 jQuery
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
[00:59]DOTA2背景故事第二期之四大基本法则
2020/07/07 DOTA
Python2.x中文乱码问题解决方法
2015/06/02 Python
python中的代码编码格式转换问题
2015/06/10 Python
详解python的数字类型变量与其方法
2016/11/20 Python
利用python求相邻数的方法示例
2017/08/18 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
对Python函数设计规范详解
2019/07/19 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
市政施工员自我鉴定
2014/01/15 职场文书
《掌声》教学反思
2014/02/23 职场文书
高中生的自我评价
2014/03/04 职场文书
婚假请假条格式及范文
2014/04/10 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
毕业评语大全
2014/05/04 职场文书
村干部任职承诺书
2015/01/21 职场文书
信访工作个人总结
2015/03/03 职场文书
通知函格式范文
2015/04/27 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS