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.companysz.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 >>>
本文(完)
新聞熱點
疑難解答