Python提供了大量的字符串处理函数,可以帮助我们完成很多有意义的工作。
这里介绍的 index() 函数也是一个Python内建的字符串处理函数,它的作用是返回子字符串在原字符串中首次出现的位置索引。
str.index( sub [, start [, end ]])
str:是要进行处理的字符串或字符串变量;
各参数的含义如下:
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中运行的情况如下图所示:
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中的运行情况:
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() 函数会报错,有时使用不够方便。在实际中,我们可以借助Python的异常处理机制来完成工作,见下面的例子。
>>> str1 = "武林网VEVB" >>> try: print(str1.index('It')) except ValueError as ve: print("没有找到子字符串") 没有找到子字符串
在Python3.8.2中的运行情况如下图所示:
在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 >>>
本文(完)
新闻热点
疑难解答