300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Python进行模糊匹配

Python进行模糊匹配

时间:2023-12-29 17:41:50

相关推荐

Python进行模糊匹配

Mr Chen昨天提出了一个问题一起探讨,问题如下:

Python库里有fuzzywuzzy和difflib,两个库均可实现词粒度的模糊匹配,同时可设定模糊阈值,实现关键词的提取、地址匹配、语法检查等。针对fuzzywuzzy的process模块做了下测试,将旧物料描述和新物料描述分别存放不同的文件中。

循环新描述中的明细,逐个匹配所有旧描述,得到返回值和匹配度后将结果写入新描述文件的B列和C列。

具体实现代码如下:

from fuzzywuzzy import processimport xlwings as wxdef get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()def open_file(filename,list_id):app = wx.App(visible=False, add_book=False) # 不打开excelprint("开始处理"+filename)wb = app.books.open(filename)sheet = wb.sheets[0]# 获取有值的最大行数nrows = sheet.used_range.last_cell.rowfor row in range(1,nrows+1):name = str(sheet.range((row,1)).value)list_id.append(name)print(list_id)wb.close()app.quit()def update_file(filename,list_id):app = wx.App(visible=False, add_book=False) # 不打开excelprint("开始更新"+filename)wb = app.books.open(filename)sheet = wb.sheets[0]# 获取有值的最大行数ct=0for vla in list_id:ct+=1print(vla)print('更新值'+vla[1])sheet.range('B'+str(ct)).value = vla[1]sheet.range('C'+str(ct)).value = vla[2]wb.save()wb.close()app.quit()def main():file_old = 'D:/test_files/报表一.xlsx' #input('输入旧物料描述文件:') # 文件位置file_new = 'D:/test_files/报表二.xlsx' #input('输入新物料描述文件:')list_old = []list_new = []list_add = []#取文件内容open_file(file_old,list_old)open_file(file_new,list_new)#循环新物料描述,在旧物料描述中匹配for new in list_new:res = process.extractOne(new, list_old)list_add.append([new,res[0],res[1]])#将结果返写回新物料描述文件update_file(file_new,list_add)if __name__=='__main__':main()

执行后查看结果,打开新描述的文件

这是少量的数据,不知道几万条数据效率会怎么样。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。