[英]Check if a string contains one or more of list values in 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
。 不知道为什么会发生。 请帮我。
您可以在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
您可以使用str.contains-或lambda函数进行过滤(我将其用于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)])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.