Подбор фраз, содержащих c слов в python - PullRequest
1 голос
/ 21 марта 2020

У меня есть список с 10 именами и список со многими фразами. Я только хочу выбрать фразы, содержащие одно из этих имен.

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

В этом примере, есть ли способ выбрать только вторую фразу, учитывая лицо, которое содержит Павла, учитывая эти два массива? Вот что я попробовал:

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 (). Есть предложения?

1 Ответ

1 голос
/ 21 марта 2020

Вы используете любой неправильно, выполните следующие действия:

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 потому что any возвращает bool и вы пытаетесь найти bool внутри строки (if any(y) in phrase:).

Обратите внимание, что any(y) работает, потому что он будет использовать истинное значение каждой из строк y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...