我有一列名字,我試圖從字符串列表中取出。我一直得到誤判,如部分匹配。另一個警告是,我希望它也可以在適用的情況下獲取姓氏。基於另一個列表中的值搜索列表
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'',那麼爲什麼'聖誕節在這裏'缺失? –