需求:不需要字段一 一对应对比,都存在即可认为相同
1.is0805.xls:数据格式
2.act.xls:数据格式
对比后输出:
import xlrd import json # 将两个文件处理成列表 path1 = 'E:/data806/act.xls' path2 = 'E:/data806/is0805.xls' workbook1 = xlrd.open_workbook(path1) Datasheet1 = workbook1.sheets()[0] workbook2 = xlrd.open_workbook(path2) Datasheet2 = workbook2.sheets()[0] num1 = Datasheet1.nrows for n in range(1, num1): dict1 = json.loads(Datasheet2.cell_value(n, 9)) # 这是一个多级字典 #对脚本跑出来的处理 dict11 = dict1['fd_risklv'] list1 = [] list1 = list(dict11.values()) #取出字典所有value转成 list1 无序列表 # 将脚本跑出的json数据处理成顺序输出的列表1 list_py = sorted(list1) list2 = [] rowline = Datasheet1.row_values(n) # print(rowline) for i in rowline: if i != '': list2.append(i) # 将DTS跑出的数据处理成列表2 list_dts = list2[3:] if len(list_py) > len(list_dts): c = set(list_py) - set(list_dts) else: c = set(list_dts) - set(list_py) if len(c) != 0: print("第" + str(n) + "行" + " " + list2[1]) print("脚本", list_py) print("DTS", list_dts) print("差异", list(c), end="") print("\n") print("-------------------") '''关注点''' #处理成什么数据格式 #字典顺序输出 #列表去空格处理 #对比 集合做差需求2:对应字段值 一 一 对比
mport xlrd import json import difflib # 将两个文件处理成字典 path1 = 'E:/data806/act.xls' path2 = 'E:/data806/is0805.xls' workbook1 = xlrd.open_workbook(path1) Datasheet1 = workbook1.sheets()[0] workbook2 = xlrd.open_workbook(path2) Datasheet2 = workbook2.sheets()[0] num1 = Datasheet1.nrows for n in range(1, num1): dict1 = json.loads(Datasheet2.cell_value(n, 9)) # 这是一个多级字典 dict11 = dict1['fd_risklv'] name = Datasheet1.row_values(n) list = [] list.append( { 'fdrisk_detail1': name[5], 'fdrisk_detail2': name[6], 'fdrisk_detail3': name[7], 'fdrisk_detail4': name[8], # 'fdrisk_detail5': name[9] } ) dict22 = list[0] # 下面对两个字典相同key的value值对比做处理 key1 = dict11.keys() key2 = dict22.keys() keys = set(key1) & set(key2) for my_key in keys: value1 = dict11[str(my_key)] value2 = dict22[str(my_key)] diff = difflib.SequenceMatcher(None, value2, value1).quick_ratio() if diff == 0.0: print(" " + "第" + str(n) + "行" + str(my_key) + "不同", "DTS是——" + str(value2), "脚本是--" + str(value1))输出: