检查字符串是否包含python

时间:2017-12-19 13:07:51

标签: python

我有一个列表和一个字符串如下。

mylist = ["tim tam", "yogurt", "strawberry"]
mystring = "I love to eat tim tam"

现在我想检查mystring是否包含mylist中的一个或多个字词。如果它包含flag变量应为true,如果不是false。

我目前的代码如下。

if mylist in mystring:
    flag = 1
else:
    flag = 0

但是,我收到错误TypeError: argument of type 'method' is not iterable。不知道为什么会这样。请帮帮我。

2 个答案:

答案 0 :(得分:3)

您可以在any中使用生成器表达式来检查每个子字符串与原始字符串

>>> flag = any(i in mystring for i in mylist)
>>> flag
True

如果您想要int代替bool,可以修改以上内容

>>> flag = int(any(i in mystring for i in mylist))
>>> flag
1

答案 1 :(得分:0)

您可以使用str.contains-或lambda-function进行过滤(我将其用于DataFrame)。

df=df.str.contains("keyword1|keyword2|keyword3", na=False)]

ddf[df.apply(lambda r: r.str.contains('keyword1|keyword2|keyword3', case=False).any(), axis=1)] 

示例:

mylist = 'tim tam|yogurt|strawberry'   
df = pd.DataFrame(df[df[[0,1,2,3...]].apply(lambda r: r.str.contains(mylist, case=False).any(), axis=1)])