字符串6:查询统计

本文介绍了Python字符串的查询统计方法,包括count、find、rfind、index和rindex五个函数,详细解析了它们的用法和区别,特别是在查找子字符串时的索引定位和异常处理情况。
部署运行你感兴趣的模型镜像

目录

1. count(sub[,start[,end]])

2. find(sub[,start[,end]])

3. rfind(sub[,start[,end]]) 

4. index(sub[,start[,end]])

5. rindex(sub[,start[,end]])


1. count(sub[,start[,end]])

返回 sub 在字符串中不重叠的出现次数,可选参数 start 和 end 用于指定起始和结束位置

x = '01233210123abccbabc'

#查询数据sub必须为字符串,否则报错
x.count(1)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: must be str, not int


x.count('0')
2
x.count('1')
3
x.count('4')
0
x.count('0123')
2
x.count('3210')
1
x.count('01',0)
2
x.count('01',1)
1
x.count('01',9)
0
x.count('01',7)
1
x.count('01',8)
0
x.count('01',0,1)
0
x.count('01',0,2)
1
x.count('01',0,8)
1
x.count('01',0,9)
2

2. find(sub[,start[,end]])

在字符串中查找 sub 子字符串,返回匹配的最低索引值,即从从左至右的第一个匹配字符串索引;

可选参数 start 和 end 用于指定起始和结束位置;

如果未能匹配子字符串,返回 -1;

单个子字符返回字符位置索引,子字符串返回第一个字符位置索引;

子字符串必须在被查询范围(全字符串 或 start至end-1范围)整段被完整匹配;

终止值大于起始值,查询不到,返回-1;

起始值存在,终止值可以为空;终止值存在,起始值为空则报错;

x = '0123456789abcdefg'

#查询非字符串数据,报错
x.find(3)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: must be str, not int
#查询单个字符,返回字符索引值;查询字符串,返回匹配的最低索引值
x.find('3')
3
x.find('9ab')
9
#字符串必须完整匹配,否则查找不到,返回-1
x.find('9b')
-1

#从索引值4开始查找,查找不到,返回-1
x.find('3',4)
-1
#从索引值3开始查找,返回索引值3
x.find('3',3)
3
#查整段字符串,必须完整的在查询范围内被查询到,否则查询不到,返回-1
x.find('345',4)
-1
x.find('345',0,5)
-1

#起始索引值存在,终止索引值为空,可以查找
x.find('3',3,)
3
#终止索引值存在,起始索引值为空,报错
x.find('3',,3)
  File "<input>", line 1
    x.find('3',,3)
               ^
SyntaxError: invalid syntax

#从索引值0至3-1查找,查找不到,返回-1
x.find('3',0,3)
-1
#从索引值2至4-1查找,返回索引值3
x.find('3',2,4)
3
#终止值大于起始值,查找不到,返回-1
x.find('abc',13,9)
-1
x.find('abc',9,13)
10

3. rfind(sub[,start[,end]]) 

在字符串中自右向左查找 sub 子字符串,返回匹配的最高索引值,即从右至左的第一个匹配字符串索引;;

可选参数 start 和 end 用于指定起始和结束位置;

如果未能匹配子字符串,返回 -1;

单个子字符返回字符位置索引,子字符串返回第一个字符位置索引;

子字符串必须在被查询范围(全字符串 或 start至end-1范围)整段被完整匹配;

终止值大于起始值,查询不到,返回-1;

起始值存在,终止值可以为空;终止值存在,起始值为空则报错;

x = '01233210123abccbabc'

#find从左至右查询,rfind从右至左查询,子字符串返回第一个字符位置索引
x.rfind('123')
8
x.find('123')
1

#从起始索引值0、5、9查找,返回区域内从右至左的第一个完整匹配的字符串,的第一个字符索引值
x.rfind('123',0)
8
x.rfind('123',5)
8
x.rfind('123',9)
-1

#从起始索引值0至终点索引值5、9、11查找,返回区域内从右至左的第一个完整匹配的字符串,的第一个字符索引值
x.rfind('123',0,5)
1
x.rfind('123',0,9)
1
x.rfind('123',0,11)
8

4. index(sub[,start[,end]])

在字符串中查找 sub 子字符串,返回匹配的最低索引值;

可选参数 start 和 end 用于指定起始和结束位置;

与 find() 方法基本一致,除了如未能匹配子字符串时,不是抛出 -1,而是抛出 ValueError 异常;

x = '0123456789abcdefg'

#查询单个字符,返回字符索引值;查询字符串,返回匹配的最低索引值
x.index('3')
3
x.index('9ab')
9

#字符串必须完整匹配,否则查找不到,报错
x.index('9b')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: substring not found

#从索引值4开始查找,查找不到,报错
x.index('3',4)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: substring not found
#从索引值3开始查找,返回索引值3
x.index('3',3)
3

#查整段字符串,必须完整的在查询范围内被查询到,否则查询不到,报错
x.index('345',3)
3
x.index('345',2,5)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: substring not found

#起始索引值存在,终止索引值为空,可以查找
x.index('345',2,)
3
#终止索引值存在,起始索引值为空,报错
x.index('345',,8)
  File "<input>", line 1
    x.index('345',,8)
                  ^
SyntaxError: invalid syntax

5. rindex(sub[,start[,end]])

在字符串中自右向左查找 sub 子字符串,返回匹配的最高索引值;

可选参数 start 和 end 用于指定起始和结束位置;

与 rfind() 方法基本一致,除了如未能匹配子字符串时,不是抛出 -1,而是抛出 ValueError 异常;

x = '01233210123abccbabc'

#find从左至右查询,rfind从右至左查询,子字符串返回第一个字符位置索引
x.rindex('123')
8
x.index('123')
1

#从起始索引值0、5、9查找,返回区域内从右至左的第一个完整匹配的字符串,的第一个字符索引值
x.rindex('123',0)
8
x.rindex('123',5)
8
x.rindex('123',9)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: substring not found

#从起始索引值0至终点索引值5、9、11查找,返回区域内从右至左的第一个完整匹配的字符串,的第一个字符索引值
x.rindex('123',0,5)
1
x.rindex('123',0,9)
1
x.rindex('123',0,11)
8

位置;如果未能匹配子字符串,抛出 ValueError 异常

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃烧的火鸟啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值