在 python 中选择包含特定单词的短语

Picking phrases containing specific words in python

我有一个包含 10 个名字的列表和一个包含许多短语的列表。我只想 select 包含这些名称之一的短语。

ArrayNames = [Mark, Alice, Paul]
ArrayPhrases = ["today is sunny", "Paul likes apples", "The cat is alive"]

在这个例子中,考虑到包含 Paul 的面孔,有没有办法只选择第二个短语,给定这两个数组? 这是我试过的:

def foo(x,y):
tmp = []
for phrase in x:
    if any(y) in phrase:
        tmp.append(phrase)     
print(tmp)

x是短语数组,y是名字数组。 这是输出:

    if any(y) in phrase:
TypeError: coercing to Unicode: need string or buffer, bool found

我非常不确定我使用的关于 any() 构造的语法。有什么建议吗?

您对 any 的用法不正确,请执行以下操作:

ArrayNames = ['Mark', 'Alice', 'Paul']
ArrayPhrases = ["today is sunny", "Paul likes apples", "The cat is alive"]

result = []
for phrase in ArrayPhrases:
    if any(name in phrase for name in ArrayNames):
        result.append(phrase)

print(result)

输出

['Paul likes apples']

你得到一个 TypeError 因为任何 returns 一个 bool 并且你试图在一个字符串中搜索一个 bool (if any(y) in phrase:)。

请注意 any(y) 有效,因为它将使用 y.

的每个字符串的 truthy