需求:不需要字段一 一对应对比,都存在即可认为相同
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))
输出:
京公网安备 11010502036488号