本篇內容主要講解“如何用python查找子串所在位置”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何用python查找子串所在位置”吧!
string = "abcdcdefg"
print string.index('cde')
用index方法實現一個查找子串所在位置的方法,看下面兩個字符串:
string = "abcdcdefg"
sub = "cde"
通過觀察你會發現,sub這個字符串在string是存在的,且起始位置為4,這就是我們要獲得的結果。
sub的第一個字符是c,我應該先在string中找到一個字符c,這個位置可能就是子串cde開始的位置,當然也可能不是,string中就有一段是cdc,前兩個字符確實一樣,但是第三個字符不一樣,不過沒關系,我們先把string中的c字符找到再說
在string中找到c這個字符后,應該接著比較剩余的部分,如果剩余的部分都對應得上,便找到了子串的開始位置
#coding=utf-8
string = "abcdcdefg"
sub = "cde"
i = 0
#注意這種賦值方式,簡單,不用寫多行
string_len,sub_len = len(string),len(sub)
# 記錄子串的起始位置
index = -1
# 循環無處不在
while i < string_len:
# 一定要先找到和sub[0]相等的字符
if string[i] == sub[0]:
index,m = i,i
j = 0
#接下來要比較剩余的部分
while j< sub_len and m < string_len \
and string[m] == sub[j]:
m += 1
j += 1
# 最精妙的地方是這段代碼
if not j == sub_len:
index = -1
else:
break
i += 1
print index
string_len,sub_len = len(string),len(sub) 是非常便捷的變量賦值方式,如果不這么寫,就得分成兩條語句
對于while 循環,與for循環不同的地方在于,你必須牢牢的控制循環的條件,也就是while 后面所跟著的表達式,它們決定了循環何時結束
在第二個while循環開始前,我創建了一個名為m的變量,而沒有繼續使用i作為比較時所用的索引,這是因為i被用來控制外層的while循環,如果我在第二個循環里執行了i += 1,就會影響到第一個while循環,不要忘記第一個while循環是用來尋找和sub[0] 相等的字符位置的,如果i被無故的加1 了,那么第一個while循環時必然會有某一個字符沒有被遍歷到
程序最精妙的地方在于 if not j == sub_len: 我如何知道在第二個while循環結束后就匹配到了子串呢?如果j的值和sub_len相等,就說明子串被匹配到了,因為在循環結束后,j 等于 sub_len,說明sub的每一個字符都被遍歷到了,而且與string中的某一部分一一對應,否則,循環會因為不滿足條件而中斷。我讓index 在第二個while循環開始前就等于i,這樣,便記錄了子串可能開始的位置,如果j確實等于sub_len了,那么index 就是子串開始的位置,如果 j 與 sub_len 不相等,index 的值就不是子串的開始位置,因此要重新賦值為-1
break只有在找到子串開始位置時才會執行,因為我不想繼續找了,即便后面還有子串
到此,相信大家對“如何用python查找子串所在位置”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。