Ger Cas
Ger Cas

Reputation: 2298

Search the best match comparing prefixes

I have the numbers codes and text codes like in table1 below. And I have the numbers to search like in table2 for which I want to get the best match for a prefix of minimun length of 3 comparing from left to rigth and show as answer the corresponding TEXT CODE.

I show some comments explaining the conditions applied in answer expected for each Number to search next to table2. enter image description here

My current attempt shows the exact matches, but I'm not sure how to compare the values to search for the other conditions, when there is no exact match.

ncode = ["88271","1893","107728","4482","3527","71290","404","5081","7129","33751","3","40489","107724"]
tcode = ["RI","NE","JH","XT","LF","NE","RI","XT","QS","XT","YU","WE","RP"]
tosearch = ["50923","712902","404","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']]

The expected output would be

out = [
        ['50923',     '712902', '404', '10772'], 
        ['NOT FOUND', 'NE',     'RI',  'JH'   ]
      ] 

Upvotes: 0

Views: 176

Answers (1)

stephen
stephen

Reputation: 71

A simple solution you might consider would be the fuzzy-match library. It compares strings and calculates a similarity score. It really shines with strings rather than numbers, but it could easily be applied to find similar results in your prefix numbers.

Check out fuzzy-match here.

Here is a well written fuzzy-match tutorial.

Upvotes: 1

Related Questions