手把手教你查找字符串中包含的多個元素
回復(fù)“書籍”即可獲贈Python從入門到進(jìn)階共10本電子書
????大家好,我是Python進(jìn)階者。
前言
????前幾天在才哥交流群里,有個叫【華先生】的粉絲在Python交流群里問了一道關(guān)于Python字符串基礎(chǔ)的問題,初步一看覺得很簡單,實際上也確實不難,題目如下圖所示。

????
問題:如何查找字符串中包含的多個元素。比如某個字符串中包含“宿舍”或“公寓”或“酒店”任何一個,則返回1。
二、解決思路
????上圖中【是小董呀、】大佬提出使用列表硬上,【Barry】大佬提出用正則,也有【dcpeng】大佬提出用any()、all()函數(shù),當(dāng)然了,還有很多方法可以解決,也歡迎大家留言區(qū)留言或者私信我分享答案。
????這里我綜合大家給的答案,整理了三個實現(xiàn)方案,下面一起來看看吧!
三、解決方法
方法一
????這里給出【才哥】提供的代碼,使用了any()函數(shù),恰到好處,下面直接來看代碼吧!

s = '宿舍 餓了 酒店'any([x?in?s?for?x?in?['宿舍',?'公寓',?'酒店']])
方法二
????這里給出小小明大佬的代碼,直接正則安排。
import retext = '宿舍 餓了 酒店're.search('宿舍|公寓|酒店', text)

方法三
????這里給出【海心廣告1】大佬的代碼,本質(zhì)上也是正則,只不過這里完全是根據(jù)題意去行事的,如果確定存在,則返回1。
# coding: utf-8import redef find_kw(text):kw = ['宿舍', '公寓', '酒店']for k in kw:f_t = re.search(k, text) # 如果字符串中含有關(guān)鍵字,則返回True,否則返回Noneif f_t:return 1if __name__ == '__main__':text = '我住在希爾頓酒店'result = find_kw(text)if result:????????print(result)??#?返回1后,打印返回值1,否則不打印任何值
????當(dāng)時代碼分享之后,【冫馬讠成】大佬還特意問了一句,如果就是要求有返回值1,那怎么辦呢?答案其實已經(jīng)在上面了,當(dāng)然了,結(jié)合方法一和方法二,尤其是方法一,你完全可以將any()函數(shù)替換成你自己自定義的一個返回值為1的函數(shù),只要后面的推導(dǎo)式查得到不為空,就有戲。
四、總結(jié)
??? 我是Python進(jìn)階者。本文基于粉絲針對Python字符串的提問,給出了一個利用Python基礎(chǔ)+正則表達(dá)式處理的解決方案,完全滿足了粉絲的要求。
????最后感謝粉絲【華先生】提問,感謝【才哥】、【小小明】、【dcpeng】、【海心廣告1】大佬等提供的代碼,感謝【是小董呀、】、【Barry】、【冫馬讠成】等人的參與探討學(xué)習(xí)。文章給出了三種解決方法,如果你也有其他的方法,也可以隨時分享給我噢!人生苦短,我用python!、
????更多Python自動化辦公的相關(guān)代碼,我已經(jīng)上傳到git,歡迎大家下載和star支持。
https://github.com/cassieeric/Python-office-automation
????小伙伴們,快快用實踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。
-------------------?End?-------------------
往期精彩文章推薦:

歡迎大家點贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請在后臺回復(fù)【入群】
萬水千山總是情,點個【在看】行不行
/今日留言主題/
隨便說一兩句吧~~
