欢迎访问Python每天3分钟系列。
每天花3分钟时间,学习或温习一个Python知识点。
今天是第022篇:
查找子串
查找一个字符串中是否包含某个关键词(查找子串问题)是很常见的操作。比如:给定一句话s,查找s中是否包含关键词麦叔
。
今天来说3个相关的方法,以及它们的区别和优缺点。
in 操作符
如果只是为了判断s中是否包含麦叔,最推荐的做法是用in
或者not in
操作符:
s = '麦叔小时候卖过猪'
print('麦叔' in s)
s2 = '麦大爷小时候吃过猪'
print('麦叔' in s2)
打印的结果是:
True
False
[Finished in 23ms]
in
操作符返回True或者False,而且运行最快,是首选!
咱们加深一下,每一个Python的操作符背后都有一个魔法方法。当我们使用in
操作符的时候,它调用的是__contains__
方法。
如果我们自己定义一个类,也要支持in
和not in
运算符,只要实现__contains__
方法就可以了。
find函数
s = '麦叔小时候卖过猪'
print(s.find('麦叔'))
print(s.find('麦叔') != -1)
s2 = '麦大爷小时候吃过猪'
print(s2.find('麦叔'))
print(s2.find('麦叔') != -1)
运行结果:
0
True
-1
False
find
函数返回子串的下标,如果找不到就返回-1。s中包含麦叔,返回下标0。我们可以通过比较返回值和-1来确定是否包含子串。
index函数
index函数和find类似,也是返回子串在父串中的下标:
s = '麦叔小时候卖过猪'
print(s.index('麦叔'))
print(s.index('麦叔') != -1)
运行结果是:
0
True
但是index和find有个大的差别,如果父串中没有包含子串,会报ValueError。
看下面的代码:
s2 = '麦大爷小时候吃过猪'
print(s2.index('麦叔'))
运行结果是:
ValueError: substring not found
看起来index比较弱,为什么它还有存在的价值呢?因为index是序列(sequence)的方法,在字符串,列表,元组中都可以用,而find是字符串特有的函数。
总结一下:如果只是看是否存在,直接用in
操作符;如果还要找出下标,用find不会报错,但是index可以应用的范围更广。
声明:本网站资源来源于网络收集,如有侵权,请联系站长进行删除处理。 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解。本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。反馈邮箱:1159995880@qq.com
评论(0)