zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    oracle的 listagg() WITHIN GROUP () 行转列函数的使用
    redis-配置文件详解
    Redis下载安装步骤及操作命令
    探索linux好玩的东西
    发送邮件的工具类
    微信小程序 云开发天然鉴权获取手机号
    JS 设计模式 -代理模式
    语言之魂——原型模式
    微信小程序 云开发中部分用户获取不到unionId
    js封装三级联动
  • 原文地址:https://www.cnblogs.com/hankleo/p/11833703.html
Copyright © 2011-2022 走看看