手把手教你查找字符串中包含的多个元素

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

孤舟蓑笠翁,独钓寒江雪。

    大家好,我是Python进阶者。

前言

    前几天在才哥交流群里,有个叫【华先生】的粉丝在Python交流群里问了一道关于Python字符串基础的问题,初步一看觉得很简单,实际上也确实不难,题目如下图所示。

f192987622e4c2531fc8f7bb890a1a18.png

问题:如何查找字符串中包含的多个元素。比如某个字符串中包含“宿舍”或“公寓”或“酒店”任何一个,则返回1。

二、解决思路

    上图中【是小董呀、】大佬提出使用列表硬上,【Barry】大佬提出用正则,也有【dcpeng】大佬提出用any()、all()函数,当然了,还有很多方法可以解决,也欢迎大家留言区留言或者私信我分享答案。

    这里我综合大家给的答案,整理了三个实现方案,下面一起来看看吧!

三、解决方法

方法一

    这里给出【才哥】提供的代码,使用了any()函数,恰到好处,下面直接来看代码吧!

f20dca110889776ec26b29dd72079ab4.png

s = '宿舍 饿了 酒店'
any([x in s for x in ['宿舍', '公寓', '酒店']])

方法二

    这里给出小小明大佬的代码,直接正则安排。

import re
text = '宿舍 饿了 酒店'
re.search('宿舍|公寓|酒店', text)

50dd0bbe7cab039760cbc1cf5aa7e91c.png

方法三

    这里给出【海心广告1】大佬的代码,本质上也是正则,只不过这里完全是根据题意去行事的,如果确定存在,则返回1。

# coding: utf-8
import re




def find_kw(text):
    kw = ['宿舍', '公寓', '酒店']
    for k in kw:
        f_t = re.search(k, text)  # 如果字符串中含有关键字,则返回True,否则返回None
        if f_t:
            return 1




if __name__ == '__main__':
    text = '我住在希尔顿酒店'
    result = find_kw(text)
    if result:
        print(result)  # 返回1后,打印返回值1,否则不打印任何值

    当时代码分享之后,【冫马讠成】大佬还特意问了一句,如果就是要求有返回值1,那怎么办呢?答案其实已经在上面了,当然了,结合方法一和方法二,尤其是方法一,你完全可以将any()函数替换成你自己自定义的一个返回值为1的函数,只要后面的推导式查得到不为空,就有戏。

四、总结

    我是Python进阶者。本文基于粉丝针对Python字符串的提问,给出了一个利用Python基础+正则表达式处理的解决方案,完全满足了粉丝的要求。

    最后感谢粉丝【华先生】提问,感谢【才哥】、【小小明】、【dcpeng】、【海心广告1】大佬等提供的代码,感谢【是小董呀、】、【Barry】、【冫马讠成】等人的参与探讨学习。文章给出了三种解决方法,如果你也有其他的方法,也可以随时分享给我噢!人生苦短,我用python!、

    更多Python自动化办公的相关代码,我已经上传到git,欢迎大家下载和star支持。

https://github.com/cassieeric/Python-office-automation

13a501bb6ae6626ac8202d5f3bdf74f0.png

    小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

30683ad752ba7171a7e3eb2a33323bea.png

------------------- End -------------------

往期精彩文章推荐:

eed4c3e04ce8d7dee288d102b43ac768.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值