示例:
1. names = ['James John', 'Robert David', 'Paul' ... the list has 5K items]
2.
3. text1 = 'I saw James today'
4. text2 = 'I saw James John today'
5. text3 = 'I met Paul'
6.
7. is_name_in_text(text1,names) # this returns false 'James' in not in list
8. is_name_in_text(text2,names) # this returns 'James John'
9. is_name_in_text(text3,names) # this return 'Paul'
is_name_in_text()搜索是否有任何名称列表为文本。
简单的方法是使用“in
”运算符检查名称是否在列表中,但是该列表有5000个项,因此效率不高。我可以将文本拆分成单词,并检查单词是否是列表中的in
,但如果有多个单词匹配,则这不起作用。在这种情况下,第7行将失败。
将names变成一个set,并使用in运算符快速查找O(1)。
您可以使用regex解析句子中可能的名称:
使用所有替代项构建正则表达式。这样你就不必担心事先把词组中的名字取出来了。
您可以使用Python的set,以便在使用in运算符时获得良好的性能。
相关问题 更多 >
编程相关推荐