zl程序教程

您现在的位置是:首页 >  后端

当前栏目

如何在Python中匹配最接近的字符串

Python 如何 字符串 匹配 接近
2023-09-11 14:15:19 时间

 

■ 背景


手边有79个学校参加 智能车深度学习组别 提交的技术报告,但是在等级的EXCEL表格中对应的学校的名称与报告名称有些区别。那么如何能够比较自动对这些名称进行匹配呢?

这里使用了PYTHON库中的difflib的 get_cose_matches函数,来寻找在一个string列表中与被匹配的string最接近的字符串,其中参数 cutoff来定义匹配的相似程度。 n参数定义匹配的字符数量。

为了能够始终找到可以匹配上的字符串, 对于cutoff采用了调整的方式,直道找到一个可以匹配的字符串。

for cf in range(20):
    match = difflib.get_close_matches(l, filelist, cutoff = 1.0 - cf/20.0, n=20)
    if len(match) > 0:
        matchlist.append(match[0])
        flag = 1
        break

Say we have a list of strings: _list = […,] and user input _input = ‘…’, how do we find the items in _list that most closely resemble _input?

Python has a built-in package called difflib with the function get_close_matches() that can help us.

get_close_matches(word, possibilities, n, cutoff) accepts four parameters:

  • word - the word to find close matches for in our list

  • possibilities - the list in which to search for close matches of word

  • n (optional) - the maximum number of close matches to return. Must be > 0. Default is 3.

  • cutoff (optional) - a float in the range [0, 1] that a possibility must score in order to be considered similar to word. 0 is very lenient, 1 is very strict. Default is 0.6.

  • 相关应用:

  1. 2020年创意组论文评曰

 

01匹配结果


EXCEL文件名
安徽财经大学-安财AI零队安徽财经大学-技术报告.pdf
安徽工程大学-ahpu队安徽工程大学-ahpu队-人工智能创意赛技术报告.pdf
蚌埠学院蚌埠学院技术报告.pdf
北方工业大学-三只小白秃北方工业大学-人工智能创意赛技术报告.pdf
北华大学-北华翔龙2020北华大学+北华翔龙2020.docx
北京服装学院-乘风归队北京服装学院 乘风归队 人工智能创意赛技术报告.pdf
北京工业大学-BJUTsmart car 北京理工大学-技术报告.pdf
北京科技大学-北京科技大学人工智能创意组北京科技大学人工智能创意组技术报告.pdf
北京理工大学-北湖鲤鱼王北京理工大学-技术报告.pdf
北京联合大学-Mr.郑先生 的团队北京联合大学技术报告.docx
北京邮电大学-ADC车队北京邮电大学.pdf
重庆大学-飞来一根葱队重庆大学-人工智能创意赛技术报告(飞来一根葱队).pdf
重庆邮电大学-Mindhand重庆邮电大学+Mindhand+技术报告.pdf
大连海事大学-专业雷速登遥控车手队大连海事大学-技术报告.pdf
东北大学-青青草原催债团东南大学-机器不学习.pdf
东北大学秦皇岛分校-NEUQ人工智能一队东北大学秦皇岛分校+NEUQ人工智能一队.pdf
东莞理工学院-J中冲冲东莞理工学院-技术报告.pdf
东南大学-机器不学习东南大学-机器不学习.pdf
广东技术师范大学-冲冲冲队广东技术师范大学-冲冲冲队-人工智能创意赛技术报告.pdf
广西大学-sn团队南京师范大学-赛腾七队.pdf
国防科技大学-untitled国防科技大学 Untitled 作品报告.pdf
哈尔滨工程大学-济海追风0队哈尔滨工程大学-济海追风0队.pdf
哈尔滨工业大学(深圳)-HITsz小队哈尔滨工业大学(深圳)技术报告.pdf
哈尔滨工业大学(威海)-传球啊坤坤哈尔滨工业大学(威海)-传球啊坤坤.docx
哈尔滨工业大学-紫丁香二队哈尔滨工业大学紫丁香二队技术报告.pdf
杭州电子科技大学-杭电百度创意一队杭州电子科技大学+杭电百度创意一队.pdf
合肥学院-围巾man合肥学院-人工智能创意赛技术报告.pdf
黑龙江工程学院黑龙江工程学院人工智能创意赛技术报告(1).docx
黑龙江科技大学-让我与会员队黑龙江科技大学-无人车技术报告.docx
湖北汽车工业学院-武当山观光车队湖北汽车工业学院-武当山观光车队-技术报告.pdf
华北电力大学-CIENB华北电力大学.docx
华南理工大学-华工奔雷队华南理工大学-人工智能创意赛技术报告.docx
华南师范大学深蓝色工程师-阿尔法猫华南师范大学-深蓝色工程师阿尔法猫-技术报告.pdf
华中科技大学-深度学习一队华中科技大学深度学习一队报告.pdf
火箭军工程大学-西安小钢炮火箭军工程大学-人工智能创意赛技术报告.pdf
集美大学-一起爬山队南京师范大学-赛腾七队.pdf
江苏大学-幽荧江苏大学-人工智能创意赛技术报告.pdf
江苏理工学院-江苏理工Smartcar 江苏理工学院-人工智能创意赛技术报告.pdf
江西农业大学-南昌商学院创意组江西农业大学南昌商学院 肉蛋葱鸡队创意组技术报告.pdf
金陵科技学院-两天完赛队金陵科技学院+两天完赛队.pdf
空军预警学院空军预警学院-人工智能创意赛技术报告(1).docx
鲁东大学-WrightOcean鲁东大学-技术报告).docx
闽江学院-MJU浙江科技学院-技术报告.pdf
南京航空航天大学-冲冲冲队南京航空航天大学+冲冲冲队技术报告.pdf
南京理工大学泰州科技学院南京理工大学泰州科技学院技术报告.docx
南京师范大学-赛腾七队南京师范大学-赛腾七队.pdf
南京信息工程大学-B-DAT队南京信息工程大学-技术报告.pdf
南通大学-AIGO南通大学-人工智能创意赛技术报告.pdf
齐鲁工业大学-咱们裸熊齐鲁工业大学-人工智能创意赛技术报告-咱们裸熊.pdf
青岛科技大学-无状态ZZM的团队青岛科技大学 无状态ZZM的团队 人工智能创意赛 技术报告.pdf
曲阜师范大学-流觞曲水曲阜师范大学技术报告.pdf
厦门大学-南强至央厦门大学-第十五届全国大学生智能汽车竞赛.pdf
山东大学(威海)-真彦灏山东大学(威海)真彦灏-技术报告.docx
上海工程技术大学-爱了爱了队上海工程技术大学-人工智能创意赛技术报告.pdf
上海海事大学上海海事大学-人工智能创意赛技术报告.pdf
上海交通大学-CyberAI上海交通大学-CyberA1-人工智能创意赛技术报告.pdf
上海理工大学-一马当先上海理工大学-技术报告.pdf
四川大学-专业团队南京师范大学-赛腾七队.pdf
四川师范大学-DeepMan四川师范大学-DeepMan-技术手册.pdf
太原工业学院-晋速-虹贯星太原工业学院人工智能创意赛技术报告.docx
太原理工大学太原理工大学-人工智能创意赛技术报告.pdf
天津大学-天津大学百度创意队天津大学百度创意队技术报告.pdf
同济大学-智信‘GRAPfruitE同济大学-技术报告.pdf
武汉大学-格珈」ronhide武汉大学+珞珈-Ironhide.pdf
武汉理工大学-桨道理队-技术报告武汉理工大学-桨道理队-技术报告.pdf
西安工业大学-三张飙车队西安工业大学-技术报告.docx
西安邮电大学-今晚打老虎西安邮电大学今晚打老虎人工智能创意赛技术报告.pdf
西北工业大学-翱翔之翼队西北工业大学 翱翔之翼队 技术报告.pdf
西南交通大学-逆行者西南交通大学-人工智能创意赛技术报告.pdf
盐城工学院-欠拟合队盐城工学院-人工智能创意赛技术报告模板.pdf
长春工业大学-长工大魔鼠一队长工大魔鼠一队技术报告.pdf
长沙师范学院+中南大学-长师中南比亚迪申猴2020长师中南比亚迪申猴2020.pdf
浙大城市学院-浙江人工智能队浙大城市学院-人工智能创意赛技术报告.pdf
浙江科技学院-浙科深度学习一队华中科技大学深度学习一队报告.pdf
中北大学-卓创车队中北大学-人工智能创意赛技术报告.pdf
中国海洋大学-Phoenix中国海洋大学Phoenix技术报告.docx
中国计量大学-仰仪AI创意0队中国计量大学仰仪AI创意0队.pdf
中国矿业大学CUMTAI中国计量大学仰仪AI创意0队.pdf
中南民族大学-东经114点39中南民族大学-人工智能创意赛技术报告.pdf

前面自动匹配的过程还存在着五个错误。经过修改之后如下为正式的匹配结果:

EXCEL文件名称
安徽财经大学-安财AI零队安徽财经大学-技术报告.pdf
安徽工程大学-ahpu队安徽工程大学-ahpu队-人工智能创意赛技术报告.pdf
蚌埠学院蚌埠学院技术报告.pdf
北方工业大学-三只小白秃北方工业大学-人工智能创意赛技术报告.pdf
北华大学-北华翔龙2020北华大学+北华翔龙2020.docx
北京服装学院-乘风归队北京服装学院 乘风归队 人工智能创意赛技术报告.pdf
北京工业大学-BJUTsmart car北京理工大学-技术报告.pdf
北京科技大学-北京科技大学人工智能创意组北京科技大学人工智能创意组技术报告.pdf
北京理工大学-北湖鲤鱼王北京理工大学-技术报告.pdf
北京联合大学-Mr.郑先生 的团队北京联合大学技术报告.docx
北京邮电大学-ADC车队北京邮电大学.pdf
重庆大学-飞来一根葱队重庆大学-人工智能创意赛技术报告(飞来一根葱队).pdf
重庆邮电大学-Mindhand重庆邮电大学+Mindhand+技术报告.pdf
大连海事大学-专业雷速登遥控车手队大连海事大学-技术报告.pdf
东北大学-青青草原催债团东南大学-机器不学习.pdf
东北大学秦皇岛分校-NEUQ人工智能一队东北大学秦皇岛分校+NEUQ人工智能一队.pdf
东莞理工学院-J中冲冲东莞理工学院-技术报告.pdf
东南大学-机器不学习东南大学-机器不学习.pdf
广东技术师范大学-冲冲冲队广东技术师范大学-冲冲冲队-人工智能创意赛技术报告.pdf
广西大学-sn团队广西大学人工智能创意赛技术报告.pdf
国防科技大学-untitled国防科技大学 Untitled 作品报告.pdf
哈尔滨工程大学-济海追风0队哈尔滨工程大学-济海追风0队.pdf
哈尔滨工业大学(深圳)-HITsz小队哈尔滨工业大学(深圳)技术报告.pdf
哈尔滨工业大学(威海)-传球啊坤坤哈尔滨工业大学(威海)-传球啊坤坤.docx
哈尔滨工业大学-紫丁香二队哈尔滨工业大学紫丁香二队技术报告.pdf
杭州电子科技大学-杭电百度创意一队杭州电子科技大学+杭电百度创意一队.pdf
合肥学院-围巾man合肥学院-人工智能创意赛技术报告.pdf
黑龙江工程学院黑龙江工程学院人工智能创意赛技术报告(1).docx
黑龙江科技大学-让我与会员队黑龙江科技大学-无人车技术报告.docx
湖北汽车工业学院-武当山观光车队湖北汽车工业学院-武当山观光车队-技术报告.pdf
华北电力大学-CIENB华北电力大学.docx
华南理工大学-华工奔雷队华南理工大学-人工智能创意赛技术报告.docx
华南师范大学深蓝色工程师-阿尔法猫华南师范大学-深蓝色工程师阿尔法猫-技术报告.pdf
华中科技大学-深度学习一队华中科技大学深度学习一队报告.pdf
火箭军工程大学-西安小钢炮火箭军工程大学-人工智能创意赛技术报告.pdf
集美大学-一起爬山队集美大学人工智能创意组技术报告.pdf
江苏大学-幽荧江苏大学-人工智能创意赛技术报告.pdf
江苏理工学院-江苏理工Smartcar 江苏理工学院-人工智能创意赛技术报告.pdf
江西农业大学-南昌商学院创意组江西农业大学南昌商学院 肉蛋葱鸡队创意组技术报告.pdf
金陵科技学院-两天完赛队金陵科技学院+两天完赛队.pdf
空军预警学院空军预警学院-人工智能创意赛技术报告(1).docx
鲁东大学-WrightOcean鲁东大学-技术报告).docx
闽江学院-MJU闽江学院mju人工智能创意赛技术报告.docx
南京航空航天大学-冲冲冲队南京航空航天大学+冲冲冲队技术报告.pdf
南京理工大学泰州科技学院南京理工大学泰州科技学院技术报告.docx
南京师范大学-赛腾七队南京师范大学-赛腾七队.pdf
南京信息工程大学-B-DAT队南京信息工程大学-技术报告.pdf
南通大学-AIGO南通大学-人工智能创意赛技术报告.pdf
齐鲁工业大学-咱们裸熊齐鲁工业大学-人工智能创意赛技术报告-咱们裸熊.pdf
青岛科技大学-无状态ZZM的团队青岛科技大学 无状态ZZM的团队 人工智能创意赛 技术报告.pdf
曲阜师范大学-流觞曲水曲阜师范大学技术报告.pdf
厦门大学-南强至央厦门大学-第十五届全国大学生智能汽车竞赛.pdf
山东大学(威海)-真彦灏山东大学(威海)真彦灏-技术报告.docx
上海工程技术大学-爱了爱了队上海工程技术大学-人工智能创意赛技术报告.pdf
上海海事大学上海海事大学-人工智能创意赛技术报告.pdf
上海交通大学-CyberAI上海交通大学-CyberA1-人工智能创意赛技术报告.pdf
上海理工大学-一马当先上海理工大学-技术报告.pdf
四川大学-专业团队四川大学 创意组技术报告.pdf
四川师范大学-DeepMan四川师范大学-DeepMan-技术手册.pdf
太原工业学院-晋速-虹贯星太原工业学院人工智能创意赛技术报告.docx
太原理工大学太原理工大学-人工智能创意赛技术报告.pdf
天津大学-天津大学百度创意队天津大学百度创意队技术报告.pdf
同济大学-智信‘GRAPfruitE同济大学-技术报告.pdf
武汉大学-格珈」ronhide武汉大学+珞珈-Ironhide.pdf
武汉理工大学-桨道理队-技术报告武汉理工大学-桨道理队-技术报告.pdf
西安工业大学-三张飙车队西安工业大学-技术报告.docx
西安邮电大学-今晚打老虎西安邮电大学今晚打老虎人工智能创意赛技术报告.pdf
西北工业大学-翱翔之翼队西北工业大学 翱翔之翼队 技术报告.pdf
西南交通大学-逆行者西南交通大学-人工智能创意赛技术报告.pdf
盐城工学院-欠拟合队盐城工学院-人工智能创意赛技术报告模板.pdf
长春工业大学-长工大魔鼠一队长工大魔鼠一队技术报告.pdf
长沙师范学院+中南大学-长师中南比亚迪申猴2020长师中南比亚迪申猴2020.pdf
浙大城市学院-浙江人工智能队浙大城市学院-人工智能创意赛技术报告.pdf
浙江科技学院-浙科深度学习一队华中科技大学深度学习一队报告.pdf
中北大学-卓创车队中北大学-人工智能创意赛技术报告.pdf
中国海洋大学-Phoenix中国海洋大学Phoenix技术报告.docx
中国计量大学-仰仪AI创意0队中国计量大学仰仪AI创意0队.pdf
中国矿业大学CUMTAI中国矿业大学-人工智能创意赛技术报告.docx
中南民族大学-东经114点39中南民族大学-人工智能创意赛技术报告.pdf

 

02Python程序


#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# INFOR1.PY                    -- by Dr. ZhuoQing 2020-08-06
#
# Note:
#============================================================

from headm import *
import pandas as pd
import difflib

#------------------------------------------------------------

inforexcel = tspstring2text('inforexcel').strip('\r\n')
paperdir = tspstring2text('paperdir').strip('\r\n')

printf(inforexcel)
printf(paperdir)

filedim = os.listdir(paperdir)
#printf(filedim)
filelist = filedim

#------------------------------------------------------------
excelfile = pd.read_excel(inforexcel)
listdata = excelfile.values.tolist()

excelname = []
for id,l in enumerate(listdata):
    excelname.append(l[0])

#------------------------------------------------------------
excellist = []
matchlist = []

error = 0

for l in excelname:
    excellist.append(l)

    flag = 0

    for cf in range(20):
        match = difflib.get_close_matches(l, filelist, cutoff = 1.0 - cf/20.0)
        if len(match) > 0:
            matchlist.append(match[0])
            flag = 1
            break

    if flag == 0:
        matchlist.append('*****')
        error = error + 1

#for l in excelname:
#    excellist.append(l)

#    flag = 0
#    match = difflib.get_close_matches(l, filelist, cutoff = 0.3)
#    if len(match) > 0:
#        matchlist.append(match[0])
#        flag = 1

#    if flag == 0:
#        matchlist.append('*****')
#        error = error + 1

#------------------------------------------------------------
tspmsgclr()
printf("EXCEL 文件名")
for m,n in zip(excellist, matchlist):
    printff(m, n)

#printf("No Match:%d"%error)
tspmsgcopy()

printf("Error:%d"%error)

#------------------------------------------------------------
#        END OF FILE : INFOR1.PY
#============================================================