我有一列名字,我试图从字符串列表中取出。我一直得到误判,如部分匹配。另一个警告是,我希望它也可以在适用的情况下获取姓氏。基于另一个列表中的值搜索列表
names = ['Chris', 'Jack', 'Kim']
target = ['Chris Smith', 'I hijacked this thread', 'Kimberly','Christmas is here', 'CHRIS']
desired_output = ['Chris Smith', 'Kimberly', 'CHRIS']
我试过这段代码:
[i for e in names for i in target if i.startswith(e)]
这不出所料返回克里斯·史密斯,圣诞节是在这里,和金佰利。
我该如何做到最好?使用正则表达式还是可以用列表解析来完成?性能可能是一个问题,因为实名名单长约88万个名字。
(Python 2.7版)
编辑:我已经意识到我在这个例子中的标准是不现实的因为想包括金佰利同时排除圣诞节是这里的不可能的要求。为了缓解这个问题,我发现了一个更完整的名单,其中将包括变体(包括Kim和Kimberly)。
为什么'CHRIS'出现在输出中,而不是'我劫持了这个线程'? –
到目前为止您尝试了哪些方法? –
如果输入''Kimberly'',那么为什么'圣诞节在这里'缺失? –