知识点涉及:
1,读取excel文档数据
2,数据编码格式处理
3,find与rfind函数区别
4,检索关键字符并截取
5,查找关键字符并替换
6,集合,差集
实现代码如下:
import xlrd l_p=[] l_q=[] l_q1=[] l_p1=[] #旧的一份文档 filenameold='Vaccine_patient.xlsx' #新的一份文档 filenamenew='vaccine-1.3.1.xlsx' date2=xlrd.open_workbook(filenameold) date1=xlrd.open_workbook(filenamenew) #根据标签名称找到目标页 sheet1=date2.sheet_by_name('Input') sheet2=date1.sheet_by_name('Sheet0') #定义文档中的数据行数 row_num1=sheet1.nrows row_num2=sheet2.nrows for i in range (1,row_num1): #读取指定位置数据内容,指定编码utf-8 value1=sheet1.cell_value(i,4).encode('utf-8') #定义temp标识,如果包含字符“?”,temp返回结果会大于-1,find函数用法自行百度,注意区别rfind与find的区别 temp=value1.find(b"?",0) if temp > -1: #如果包含“?”则截取找到的位置开始,到尾部截掉,解码成str tone=value1[0:temp].decode('ascii') #查找关键字符“/vaccine/api/”替换为空 value11=tone.replace('/vaccine/api/','') #格式化后的数据放入的l_p1集合中 l_p1.append(value11) else : value12=value1.decode('ascii').replace('/vaccine/api/','') l_p1.append(value12) for j in range (0,row_num2): value2=sheet2.cell_value(j,4).encode('utf-8') temp=value2.find(b"?",0) if temp >-1: tone2=value2[0:temp].decode('ascii') value22=tone2.replace('/api/','') l_q1.append(value22) else: value2=value2.decode('ascii').replace('/api/','') l_q1.append(value2) # rust=list(set(l_p).difference(set(l_q))) #拿l_q1去和l_p1去比较,得出差集,并打印出来 rust1=list(set(l_q1).difference(set(l_p1))) for ac in rust1: print(ac)