Как проверить, есть ли список подстрок в списке (Python) - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть список строк с именем keywords:

keywords = ["123", "hello there"]

Я хочу посмотреть, есть ли какие-либо из этих строк в этом списке strArr:

strArr = ["123", "hello there", "another"]

Я пробовал это:

if all (keyword in strArr for keyword in keywords):
    print("True")
else:
    print("False")

Это работает и возвращает true, если у меня есть полная строка, но не удается, когда я пытаюсь найти подстроку, какитак:

keywords = ["123", "hello"]

Ответы [ 3 ]

0 голосов
/ 04 февраля 2019

Каждый раз, когда у вас есть группы вещей, и вы тестируете членство / пересечение и т. Д., Вы должны подумать об использовании sets.После начала работы это сделать намного проще.

См. Следующий пример:

In [46]: keywords = {"123", "hello there"}                                                  
In [47]: strArr = {"123", "hello there", "another"}                                         
In [48]: keywords & strArr   # intersection                                                               
Out[48]: {'123', 'hello there'}
In [49]: keywords.issubset(strArr)                                                          
Out[49]: True
In [50]: if (keywords & strArr):  # do something

В последней строке, если в intersection есть что-либо, значение будет True, иначе будет False.

0 голосов
/ 04 февраля 2019

Многие люди уже ответили на этот вопрос.Так как я попробовал это, я опубликую свой ответ.

print ([i for i in strArr if any(j in keywords for j in i.split())]) # Outer For loop: "i for i in strArr", Inner For Loop with If any condition(): "if any(j in keywords for j in i.split())"

Я надеюсь, что это имеет значение.:)

0 голосов
/ 04 февраля 2019

Вы можете проверить, является ли каждое ключевое слово в любым из элементов в strArr :

print( all ( any( (keyword in strItem for strItem in strArr) ) for keyword in keywords ))

Примечание: если вы проверяете условие и печатаетеВ результате вы можете просто напечатать само условие.

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