如何检查列表中是否包含子字符串列表(python)

时间:2019-02-04 02:23:15

标签: python string list csv substring

我有一个名为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 :(得分:2)

任何时候只要您有几组东西并且正在测试成员资格/交叉口等,就应该考虑使用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

答案 1 :(得分:1)

您可以检查每个关键字是否在 strArr 中的任何项中

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

注意:如果您要检查条件并打印结果,则可以只打印条件本身。

答案 2 :(得分:1)

许多人已经回答了这个问题。自从我尝试了之后,我就会发布我的答案。

http://www.bellator.com/events/d306b5/bellator-newcastle-pitbull-vs-scope
http://www.bellator.com/events/ylcu8d/bellator-215-mitrione-vs-kharitonov
http://www.bellator.com/events/yk2djw/bellator-216-mvp-vs-daley
http://www.bellator.com/events/e8rdqs/bellator-217-gallagher-vs-graham
http://www.bellator.com/events/281wxq/bellator-218-sanchez-vs-grimshaw
http://www.bellator.com/events/8lcbdi/bellator-219-koreshkov-vs-larkin
http://www.bellator.com/events/9rqguc/bellator-macdonald-vs-fitch

我希望这很重要。 :)