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的urllib库提交WEB表单
Feb 24 Python
python编程开发之日期操作实例分析
Nov 13 Python
在DigitalOcean的服务器上部署flaskblog应用
Dec 19 Python
对Python中的@classmethod用法详解
Apr 21 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
Nov 07 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
Aug 05 Python
Python实现决策树并且使用Graphviz可视化的例子
Aug 09 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 Python
Python 如何对文件目录操作
Jul 10 Python
Django与AJAX实现网页动态数据显示的示例代码
Feb 24 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 Python
python库sklearn常用操作
Aug 23 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一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
js 作用域和变量详解
2017/02/16 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
从零学习node.js之利用express搭建简易论坛(七)
2017/02/25 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
javascript验证form表单数据的案例详解
2019/03/25 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
Python实现控制台进度条功能
2016/01/04 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
python实现批量文件重命名
2019/10/31 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
Python数据正态性检验实现过程
2020/04/18 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
美国电视购物HSN官网:HSN
2016/09/07 全球购物
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
后勤主管工作职责
2013/12/07 职场文书
精通CAD能手自荐书
2014/01/31 职场文书
机械专业求职信范文
2014/07/15 职场文书
债务授权委托书范本
2014/10/17 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
Python 发送SMTP邮件的简单教程
2021/06/24 Python
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers
Golang并发工具Singleflight
2022/05/06 Golang