在使用python的開發(fā)過程中,常常需要判斷,字符串中是否存在子串的問題,但判斷一個字符串中是否存在多個字串中的一個時,如if (a or b) in c
或者if x contains a|b|c|d…
,似乎就需要借助for
做循環(huán)判斷,那么這種情況有沒有更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
>>>
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!
>>>
我們發(fā)現(xiàn),代碼結構看起來還是不夠pythonic,有沒有更加優(yōu)雅的寫法呢?可以使用內(nèi)置的any()
函數(shù)。
>>> 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
>>>