添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
精彩文章免费看

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

在使用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)
>>> print(d in a)
False

in关键词可以用来判断一个字符串中是否含有一个子串,如"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))
>>> name_list = ["Jessie", "Tomi", "Rose"]
>>> print(any(name in a for name in name_list))
False
最后编辑于:2018-12-19 12:52