python把excel数据对比,python对比excel重复数据
一个同事有两个超过表格要比较差异,找了一下有相关软件,如:无法比较,excel比较
但这两个似乎都是直接排序再比较的。
然后没办法,就用大蟒折腾了一个脚本。这个脚本先读入要比较的文件中的表。读的时候,如果没有空行就把它和它前面的加一起,直到有空行。这样比较的话,不能得到具体那一行有差异,只有一个大概的位置。如果表格中间空行越少,越精确。#!/usr/任性的大米/python
#-*-编码:utf-8-*-
importxlrd,os,sys
iflen(sys.argv)!=3:
打印\ n ./script diff _ 1。xlsxdiff _ 2。xlsx \ n
sys.exit()
diff={}
xls1=sys.argv[1]
xls2=sys.argv[2]
ifos.path.isfile(xls1)和os.path.isfile(xls2):
及格
否则:
打印\ n ./script diff _ 1。xlsxdiff _ 2。xlsx \ n
sys.exit()
defgetcontent(表):#获取文件格式表内容
tmp_data={}
tmp_table=
all_data={}
forjinxrange(table.nrows):
tmp=table.row_values(j)
iflist(set(tmp))==[]:
tmp_data[tmp_table]=
iftmp_table!=:
所有数据[j]=临时表
tmp_table=
否则:
tmp2=
foriintmp:
尝试:
tmp2=tmp2 i ,
除了:
tmp2=tmp2 str(i),
tmp_table=tmp_table tmp2 \n#把多行的内容放一起
return(tmp_data,all_data)
defwrite_file(excel_diff,文件名):
f=打开(文件名,“w”)
f.write(excel_diff)
f.close()
defdiff_content(表1、表2):#检查两个表差异
diff_tmp=[]
表格1:
ifiintable2:
及格
否则:
diff_tmp.append(i)
returnlist(set(diff_tmp))
defget_rows(diff,all_data):#获取差异位置
tmp=[]
foriindiff:
forjinall_data:
ifall_data[j].strip()==i.strip():
附加(j)
破裂
returntmp
foriinrange(0,2):#比较几个表
data1=xlrd.open_workbook(xls1)
table1=data1.sheets()[i]
data2=xlrd.open_workbook(xls2)
table2=data2.sheets()[i]
tmp1,all1=getcontent(表1)
tmp2,all2=getcontent(表2)
result=diff_content(tmp1,tmp2)#1中有2没有的具体内容
#result2=diff_content(tmp2,tmp1)#2中有一没有的具体内容
diff[i]=get_rows(结果,全部1)
打印排序(差异[我])
#写入文件(已排序(diff[i]),/tmp/diff.txt )
#diff[i]=get_rows(结果2,全部2)
#打印排序(差异[我])
原文:http://阿扁。博客。51 CTO。com/751059/1603947
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。