1. 前言
在修改一个爬虫想让它有一个按关键词检索标题的功能时,遇到了需要判断字符串中是否存在子串的问题。
2. 判断一个字符串中是否存在某一个子串
- 判断一个字符串中是否存在子串通常使用
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!"
中。
3. 判断一个字符中是否含有多个子串中的一个或几个
- 如果如果我想判断
"I Love Crystal!And I Hate Tom!"
是否含有"Crystal"
,"Tom"
,"Jessie"
中的任意一个,只要有其中的任意一个就输出True
,可使用for
循环来判断:
>>> 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!
>>>
- 更优雅的写法可以使用内置的
any
函数,有些类似于MATLAB中的同名函数,会输出对一列数组是否存在会被判别为False
的元素的判断:
>>> 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
>>>
- 只要
a
中包含name_list
中的某一个或者某几个关键词,结果即为True
。