python判斷一個字符串中是否存在多個子串中的一個

在使用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
>>> 
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容