在使用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 >>>
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)) True >>> name_list = ["Jessie", "Tomi", "Rose"] >>> print(any(name in a for name in name_list)) False >>>
