溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用python查找子串所在位置

發布時間:2021-12-18 14:35:32 來源:億速云 閱讀:463 作者:iii 欄目:大數據

本篇內容主要講解“如何用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查找子串所在位置”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女