在python中使用特定的搜索逻辑在不同的列中查找近似名称匹配

2024-05-15 13:29:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我想实现名称匹配逻辑,其中我在A列中获取值,并尝试在B列中找到类似的匹配

例如:

A栏中的“莎莉在海边卖贝壳”可以与 B栏“莎莉海贝-海滨”

基本上我想以不同的方式重新排列A列字符串,直到在B列中找到匹配项

我希望它能准确地搜索字符串,如果没有完全匹配,就开始删除字符串末尾的单词(即“Sally seals By the”,然后“Sally seals By”,然后“Sally seals By”,然后“Sally seals seals”)等,直到找到匹配项为止。我还想尝试不同的拼写变体,因为“Seashore”可以是B列中的“Sea”

这是我当前(不工作)的脚本:

df1=pd.read_csv('C:\\Users\\nkurdob\\Desktop\\Sheet1.csv')
df2=pd.read_csv('C:\\Users\\nkurdob\\Desktop\\Sheet2.csv')

l1=[]
def word(l,c):
    m=len(l)
    for k in range(0,m):
        if(l[k] in c):
            ret=0
        else:
            ret=1
    return ret


for i in range(160,1562):
   print(i)
   search1=df1['A'][i]
   print(search1)

   s2=search1.lower()
   words=s2.split()
   for j in range(0,325411):
       n=len(df2['A'][j])

                 [j]).ratio())
   if(search1 in df2['A'][j] or s2 in df2['A'][j] or words[0]+words[1] in df2['A'][j] or words[0]+words[1]+words[2] in df2['A'][j]):
       print(df2['ID'][j])
       break

我尝试过使用fuzzyfuzzy,但是它返回了一些错误的匹配,这破坏了脚本的要点。你知道吗


Tags: orcsv字符串inforbyrangesally