如何解决搜索最佳匹配比较前缀
我在下面的 numbers codes
中有 text codes
和 table1
。我在 numbers to search
中有 table2
为此,我想获得从左到右比较的 prefix of minimun length of 3
的最佳匹配,并将相应的 TEXT CODE
显示为答案。
- 如果有完全匹配,那就是答案。
- 如果没有任何具有至少 3 个长度前缀的值,那么答案将是“未找到”。
我展示了一些注释,解释了 table2 旁边的每个 Number to search
预期答案中所应用的条件。
我当前的尝试显示了完全匹配,但我不确定如何在没有完全匹配的情况下比较这些值以搜索其他条件。
ncode = ["88271","1893","107728","4482","3527","71290","404","5081","7129","33751","3","40489","107724"]
tcode = ["RI","NE","JH","XT","LF","RI","QS","YU","WE","RP"]
tosearch = ["50923","712902","10772"]
out = []
out.append([])
out.append([])
for code in tosearch:
for nc in ncode:
if code == nc:
indexOfMatched = ncode.index(nc)
out[0].append(nc)
out[1].append(tcode[indexOfMatched])
>>> out
[['404'],['RI']]
预期的输出是
out = [
['50923','712902','404','10772'],['NOT FOUND','NE','RI','JH' ]
]
解决方法
您可能考虑的一个简单解决方案是模糊匹配库。它比较字符串并计算相似度分数。它确实适用于字符串而不是数字,但它可以很容易地应用于在前缀数字中找到类似的结果。
这是一个写得很好的fuzzy-match tutorial。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。