51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Python判断一个字符串中是否存在多个子串中的一个

在使用python的开发过程中,常常需要判断,字符串中是否存在子串的问题,但判断一个字符串中是否存在多个字串中的一个时,如if (a or b) in c或者if x contains a|b|c|d...,似乎就需要借助for做循环判断,那么这种情况有没有更pythonic的方法呢?

判断一个字符串中是否存在某一个子串 {#判断一个字符串中是否存在某一个子串}

判断一个字符串中是否存在子串通常使用in关键词,如下:

|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 | >>> 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,应该怎么判断呢?

|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 9 | >>> 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()函数。

|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 7 8 | >>> 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 >>> |

参考链接:https://www.jianshu.com/p/da382b11dc3e


赞(1)
未经允许不得转载:工具盒子 » Python判断一个字符串中是否存在多个子串中的一个