这已经解决了。有关解决方案,请参阅本文的底部
我试图过滤掉一个连续的循环,该循环具有来自API的常量字符串馈送。
以下是我使用的代码示例 -
我有一个像这样的数组的过滤器设置:
filter_a = ['apples and oranges', 'a test', 'bananas']
我在Stackoverflow上找到的一个函数,如下所示:
def words_in_string(word_list, a_string):
return set(word_list).intersection(a_string.split())
title = 'bananas'
#(this is a continuously looping thing, so sometimes it
# might be for example 'apples and oranges')
我的if声明:
if words_in_string(filter_a, str(title.lower())):
print(title.lower())
出于某种原因,它会检测到香蕉'但不是苹果和橘子'。它将跳过具有多个单词的字符串。我因为分裂()而猜测它,但我不确定。
修改 这是我的意思的另一个例子:
匹配并成功:
title = 'this is 1'
word_list = ['this is','a test']
if title in word_list:
print("successful")
else:
print("unsuccessful")
编辑2:
title ='这是1'
word_list = ['这是','测试']
如果有的话(word_list中项目的标题中的项目): 打印("成功&#34) 其他: 打印("不成功&#34)
答案 0 :(得分:0)
我认为你的代码没有意义。让我们分析一下words_in_string
做了什么。
word_list
表示您要保留的单词列表,set(word_list)
将此列表转换为仅包含唯一元素的集合。在您的示例中,将['apples and oranges', 'a test', 'bannanas']
转换为集合{'apples and oranges', 'a test', 'bannanas'}
。
接下来,a_string.split()
将a_string
拆分为一个列表,然后调用set
的函数intersection
以获取集合与a_string.split()
创建的集合的交集。
最后,返回结果。
为了更清楚,给定一个单词列表,如果这些单词也包含在列表中,此函数将返回a_string
中的单词。
例如:
给定["banana", "apple", "orange"]
和a_string = "I like banana and apple"
。它将返回{"banana", "apple"}
。
但如果您将列表更改为["bananas", "apple", "orange"]
,则只会返回{"apple"}
,因为banana
不等于bananas
。