我有一条文字和条款清单。我想创建一个数组,显示在消息中找到哪些术语。例如:
message = "the quick brown fox jumps over the lazy dog"
terms = ["quick", "fox", "horse", "Lorem", "Ipsum", "the"]
result = idealMethod(message, terms)
=> [1,1,0,0,0,1]
因为“quick”是术语列表中的第一项,并且也在消息中,1位于结果的第一个位置。这是另一个例子:
message2 = "Every Lorem has a fox"
result2 = idealMethod(message2, terms)
=> [0,1,0,1,0,0]
更新 这些条款必须完全匹配。例如,如果我的搜索字词包含 sam ,我不希望匹配相同的
答案 0 :(得分:4)
我想你想要:
words = set(message.split(" "))
result = [int(word in words) for word in terms]
请注意,默认情况下split()
会在空格上拆分,因此您可以省略" "
。
答案 1 :(得分:4)
您可以使用列表理解并利用事实,True
在数值上下文中被评估为1
:
words = set(message.split())
result = [int(term in words) for term in terms]
Out[24]: [1, 1, 0, 0, 0]
在澄清之后,EDIT 更改为仅查找整个单词匹配。