首页 > 开发 > Python > 正文

Python index()函数在字符串处理中的使用

2023-04-26 12:04:42
字体:
来源:转载
供稿:网友

Python提供了大量的字符串处理函数,可以帮助我们完成很多有意义的工作。

这里介绍的 index() 函数也是一个Python内建的字符串处理函数,它的作用是返回子字符串在原字符串中首次出现的位置索引。

index()函数的语法格式

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

str:是要进行处理的字符串或字符串变量;

各参数的含义如下:

  • sub:要查找的子字符串;
  • start:可选参数,在 str 中开始查找的起始位置索引,默认为0;
  • end:可选参数,在 str 中查找时停止搜索的位置索引,默认为字符串的长度;

index()函数使用示例

1、只给出 sub 参数

>>> str1 = "武林网VEVB"
>>> print(str1.index('武林网'))
0
>>> print(str1.index('IT'))
3
>>> print(str1.index('乐园'))
5
>>> print(str1.index('it'))
Traceback (most recent call last):
    File "<pyshell#6>", line 1, in <module>
       print(str1.index('it'))
ValueError: substring not found
>>> str1 = "Python is good.Python is easy."
>>> print(str1.index('Python'))
0

从这个例子可以看出,如果原字符串中不包含要产找的子字符串,该函数会抛出一个 ValueError 错误:ValueError:substring not found,即未找到子字符串。

同时,这个例子也说明该函数是大小写敏感的。

如果字符串中含有多个子字符串时,index() 函数仅给出第一次出现子串的索引位置

以上例子在Python IDLE中运行的情况如下图所示:

Python index()函数使用的例子

2、使用 sub 和 start 参数

>>> str1 = "www.VeVb.com"
>>> print(str1.index('VeVb', 3))
4
>>> print(str1.index('.com', -4))
10
>>> str1 = "Python is good.Python is easy."
>>> print(str1.index("Python", 0))
0
>>> print(str1.index("Python", 3))
15

从该例可以看出,start 参数也可以给负数,即从字符串的尾端往前定位,从字符串尾端往前定位时,最后一个字符的索引为-1,则该例给的 -4 的值是字符“.”的位置。

以上例子在Python 3.8.2中的运行情况:

Python index()函数使用举例

3、使用end参数

>>> str1 = "河北泊头:中国鸭梨第一乡"
>>> print(str1.index("泊头", 2, 4))
2
>>> print(str1.index("泊头", 2, 3))
Traceback (most recent call last):
    File "<pyshell#21>", line 1, in <module>
        print(str1.index("泊头", 2, 3))
ValueError: substring not found
>>> print(str1.index("泊头", 1, -3))
2

以上在Python 3.8.2中的运行情况如下图所示:

end 参数是index()函数搜索的停止位置,在匹配子串时不包括 end 位置的字符,上面第2个例子就说明了这个问题。

同时,end 参数也可以使用负数来表示,则是从后往前进行定位。

index()函数异常的处理

由于当字符串中不含子串时,index() 函数会报错,有时使用不够方便。在实际中,我们可以借助Python的异常处理机制来完成工作,见下面的例子。

>>> str1 = "武林网VEVB"
>>> try:
           print(str1.index('It'))
except ValueError as ve:
           print("没有找到子字符串")

没有找到子字符串

在Python3.8.2中的运行情况如下图所示:

index() vs find()

在Python中 index()函数与 find()函数(find()函数的使用见本站《Python中find()字符串函数的使用方法》)仅有一点不同之处,那就是find()函数在给子字符串定位时,当字符串中不包含子字符串的值时,会返回-1,而不是像index()那样给出一个 ValueError 的错误。见下面的对比例子:

>>> str1 = "I Love you."
>>> print(str1.index('love'))
Traceback (most recent call last):
    File "<pyshell#42>", line 1, in <module>
       print(str1.index('love'))
ValueError: substring not found
>>> print(str1.find('love'))
-1
>>>

本文(完)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表