我试图通过使用第一个、第二个和姓氏来匹配名称,无论是否以正确的顺序使用,是否使用所有名称。到目前为止,我已经得到了这段代码并且它有点工作,但我认为这不是正确的做法。你知道另一种方法吗?
数据集中的名称如下所示:
name = 'DAVID SCOTT MUSTAIN'
如果我搜索, , 等'DAVID'
,我想要的是匹配该名称。到目前为止,我得到的函数如下所示:'MUSTAIN SCOTT'
'SCOTT DAVID'
def search_name(somename):
for full_name in some_dataset:
if set(somename.upper().split()).issubset(full_name.split()):
print('match:', full_name)
如果我输入类似'DAV'
或 的内容'SCOT'
,则不会匹配任何内容。即使名称不完整,我应该如何继续进行匹配?如果我将名称拆分为单个字母,它会将每个名称与这些字母匹配,而不检查字母的顺序。
您可以使用any
检查中的任何名称是否是任何名称somename
的子集full_name
def search_name(somename):
for full_name in some_dataset:
if any(n.upper() in fn for n in somename.split() for fn in full_name.split()):
print('match:', full_name)
这是一个使用sum
字典来选择匹配最多的名称的示例:
def search_name(somename):
matches = {}
for full_name in some_dataset:
matches[full_name] = sum(1 for n in somename.split() for fn in full_name.split() if n.upper() in fn)
best_matches = [k for k,v in matches.items() if v == max(matches.values()) if v != 0]
for match in best_matches:
print('match:', match)
我确信有更好的方法来编写这个函数,但我睡眠不足..
至于你的第二个问题,也许你可以打印/返回best_matches
列表中的所有项目?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句