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

 

■ 背景


手边有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
北京工业大学-BJUT smart 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
江苏理工学院-江苏理工Smart car 江苏理工学院-人工智能创意赛技术报告.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
江苏理工学院-江苏理工Smart car 江苏理工学院-人工智能创意赛技术报告.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
#============================================================

你可能感兴趣的:(智能车竞赛,分享,Python)