计算机图像理论opencv及vslamPython时空大数据

Python按行对比2张表格--Apple的学习笔记

2019-10-01  本文已影响0人  applecai

一,动机:

  因为RTE接口设计文档是表格,然后工具操作人员按照设计表格会生成arxml文件,我已经能从arxml文件中提取RTE接口设计信息并且保存成表格。
  那么我就可以检查操作人员最后输出的结果是否和设计一致。

二,立项:

  我要做的就是按行对比两张表格。
  先用xlrd读取表格数据到list中,然后对比list。结果发现一个严重的问题就是表格某列是数字,需要转为字符对比。用xlrd按行对比的时候还要转列数据为字符很不方便。
   于是修改方案为pandas读取表格然后转为list进行按行对比。

三,代码如下:

# -*- coding: utf-8 -*-
import xlrd
import os
import pandas as pd
import numpy as np

def read_excel_list(fname):
    filepath = os.path.join(os.path.dirname(__file__), "input", fname)
    # 将数字类型都转为字符串,否则会影响对比结果
    tempdf=pd.read_excel(filepath, sheet_name='SWC', dtype={'InitValue':str})
    # tempdf = tempdf.replace(np.nan, '', regex=True)
    tempdf=tempdf.fillna('')  # 对于空格需要将nan替换,否则会影响对比结果
    # 将df转为list前需要先转为np.array
    tempnp=np.array(tempdf)
    return(tempnp.tolist())

def compareDesigner(lista,listb):
    result=False
    for i,item in enumerate(lista):
        if item not in listb:
            result = True
            # i+1个标题+1个从0还是改成从1开始,所以为加2
            print(' 表格行数{}:内容{}'.format(i+2, item))  
        else:
            result = False
    if  result==False:
        print(" 无")

if __name__ == '__main__':
    # 结果文件,将对标设计文件,不匹配则输出
    listReal=read_excel_list("SWC1.xls")    
    # 设计文件
    listDesign=read_excel_list("SWC2.xls")  
    # 开始对比2个表格
    print("1. 没有实现或者错误实现的项如下:")
    compareDesigner(listDesign,listReal)
    print("2. 锦上添花的项如下:")
    compareDesigner(listReal,listDesign)

四,运行结果如下:

  1. 没有实现或者错误实现的项如下:
    表格行数11:内容['ppForward_Looking_Target_1_0x681', 'send', 'if_376_0x681', 's_FLT1_Long_Velocity', '0', '', '', '', 'uint16']
    表格行数12:内容['ppForward_Looking_Target_1_0x681', 'send', 'if_376_0x681', 's_FLT1_Long_Range', '0', '', '', '', 'uint16']
    表格行数13:内容['ppForward_Looking_Target_1_0x681', 'send', 'if_376_0x681', 's_FLT1_Rolling_Counter', '0', '', '', '', 'uint8']
    表格行数14:内容['ppForward_Looking_Target_1_0x681', 'send', 'if_376_0x681', 's_FLT1_Range_Rate', '0', '', '', '', 'uint8']
    表格行数15:内容['ppForward_Looking_Target_1_0x681', 'send', 'if_376_0x681', 's_FLT1_Lat_Velocity', '0', '', '', '', 'uint8']
  2. 锦上添花的项如下:
上一篇 下一篇

猜你喜欢

热点阅读