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)
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
>>>

 

from: https://www.jianshu.com/p/da382b11dc3e


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM