Python判断一个字符串中是否存在多个子串中的一个

喜夏-厌秋 提交于 2019-12-04 05:41:24

在使用python的开发过程中,常常需要判断,字符串中是否存在子串的问题,

但判断一个字符串中是否存在多个字串中的一个时,如if (a or b) in c或者if x contains a|b|c|d…

似乎就需要借助for做循环判断,那么这种情况有没有更pythonic的方法呢?

判断一个字符串中是否存在某一个子串

判断一个字符串中是否存在子串通常使用in关键词,如下:

>>> a = "I Love Crystal!And I Hate Tom!"
>>> b = "Crystal"
>>> c = "Tom"
>>> d = "Jessie"
>>> print(b in a)
True
>>> print(d in a)
False
>>>
如```"Crystal"在"I Love Crystal!And I Hate Tom!"```中,```"Jessie"```不在```"I Love Crystal!And I Hate Tom!"```中。


###判断一个字符中是否含有多个子串中的一个
问题来了

如果如果我想判断```"I Love Crystal!And I Hate Tom!"```是否含有```"Crystal", "Tom", "Jessie"```中的任意一个

只要有其中的任意一个就输出True,应该怎么判断呢?

a = "I Love Crystal!And I Hate Tom!"
name_list = ["Jessie", "Tom", "Crystal"]
for name in name_list:
... if name in a:
... print("got you!")
... break
...
got you!



我们发现,代码结构看起来还是不够pythonic

有没有更加优雅的写法呢?

可以使用内置的```any()```函数。

a = "I Love Crystal!And I Hate Tom!"
name_list = ["Jessie", "Tom", "Crystal"]
print(any(name in a for name in name_list))
True
name_list = ["Jessie", "Tomi", "Rose"]
print(any(name in a for name in name_list))
False

```

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!