最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中的字符串查找操作方法總結(jié)

 更新時間:2016年06月27日 15:40:14   作者:mink的小屋  
這里我們來整理一下Python中的字符串查找操作方法總結(jié),除了基本的find()方法外,還會講解到樸素匹配算法和KMP算法的使用:

基本的字符串位置查找方法
Python 查找字符串使用 變量.find("要查找的內(nèi)容"[,開始位置,結(jié)束位置]),開始位置和結(jié)束位置,表示要查找的范圍,為空則表示查找所有。查找到后會返回位置,位置從0開始算,如果每找到則返回-1。

str = 'a,hello' 
print str.find('hello') # 在字符串str里查找字符串hello 
>> 2     # 輸出結(jié)果 

樸素匹配算法

樸素匹配算法是對目標字符串和模板字符串的一一匹配。如果匹配得上,下標向右移一位, 否則清空并重新開始匹配。

target = 'abb aba'
pattern = 'aba'

def match(target, pattern):
  i = j = 0
  n, m = len(target), len(pattern)
  while i < n and j < m:
    # 如果字符相等則目標和模板的下標都向右移
    if target[i] == pattern[j]:
      i, j = i+1, j+1
    else:
      # 如果字符不相等則目標下標切換到不相等的下標
      # 模板下標移動到初始下標
      i = i - j + 1
      j = 0
  if j == m:
    return i - j
  return -1

把上面的加上print后打印一遍

#修改的地方
else:
  i = i -j + 1
  j = 0
  print(target[i], pattern[j], i, j)

# 打印結(jié)果
b a 1 0
b a 2 0
 a 3 0
a a 4 0

循環(huán)會一直到相等的匹配值, 這個方法效率低下,主要是在不匹配時會重新把模板字符循環(huán)一次。最多可能會出現(xiàn) m * (n-m +1)次。m是模板字符的長度,n-m + 1是排除不等字符的次數(shù)。

KMP 算法

kmp是通過已知匹配的字符進行移位的算法,比如上面的abb 中跟abc比較的話 ab是已知的。

def match(target, pattern):
  i = j = 0
  n, m = len(target), len(pattern)
  while i < n and j < m:
    # 如果字符相等則目標和模板的下標都向右移
    if if j == -1 and target[i] == pattern[j]:
      i, j = i+1, j+1
    else:
      # 這里通過next 函數(shù)來判斷位移個數(shù)
      i = i - j + pattern_next(pattern[:j])
      j = 0
  if j == m:
    return i - j
  return -1


def pattern_next(s):  
  prefix = [s[:i+1] for i in range(len(s)-1)]
  suffix = [s[i+1:] for i in range(len(s)-1)]
  l = list(set(prefix) & set(suffix))
  return len(l)

相關(guān)文章

  • Python4種配色方案詳解(適合科研的配色)

    Python4種配色方案詳解(適合科研的配色)

    配色的選擇是在我們論文文章畫圖過程中經(jīng)常面臨的一個問題,下面這篇文章主要介紹了Python4種配色方案的相關(guān)資料,感興趣的朋友一起看看吧
    2020-02-02
  • 小小聊天室Python代碼實現(xiàn)

    小小聊天室Python代碼實現(xiàn)

    這篇文章主要為大家詳細介紹了小小聊天室Python具體的實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Python獲取協(xié)程返回值的四種方式詳解

    Python獲取協(xié)程返回值的四種方式詳解

    這篇文章主要為大家介紹了Python中獲取協(xié)程返回值的四種方法的示例代碼,文中的代碼詳細易懂,對我們學(xué)習(xí)Python有一定的幫助,需要的朋友可以了解一下
    2021-12-12
  • python中數(shù)組和列表的簡單實例

    python中數(shù)組和列表的簡單實例

    ,Python數(shù)據(jù)類型分為很多種,其中包括元組、字典、列表等,下面這篇文章主要給大家介紹了python中數(shù)組和列表使用的相關(guān)資料,以及python列表和Numpy數(shù)組的區(qū)別,需要的朋友可以參考下
    2022-03-03
  • Python模型聚合查詢\Q查詢\F查詢\分組查詢操作技巧解析

    Python模型聚合查詢\Q查詢\F查詢\分組查詢操作技巧解析

    這篇文章主要介紹了模型查詢中的一些操作技巧,主要包括模型聚合查詢,Q查詢,F(xiàn)查詢,分組查詢,有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • python2爬取百度貼吧指定關(guān)鍵字和圖片代碼實例

    python2爬取百度貼吧指定關(guān)鍵字和圖片代碼實例

    這篇文章主要介紹了python2爬取百度貼吧指定關(guān)鍵字和圖片代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • python3.6 tkinter實現(xiàn)屏保小程序

    python3.6 tkinter實現(xiàn)屏保小程序

    這篇文章主要為大家詳細介紹了python3.6 tkinter實現(xiàn)屏保小程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 詳解Python中for循環(huán)是如何工作的

    詳解Python中for循環(huán)是如何工作的

    如果你對python中的for循環(huán)不是很清楚,那么建議你看看這篇文章,本文主要給大家介紹了關(guān)于Python中for循環(huán)是如何工作的相關(guān)資料,介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • Python 正則表達式大全(推薦)

    Python 正則表達式大全(推薦)

    正則表達式是對字符串操作的一種邏輯公式,正則表達式是一種文本模式,該模式描述在搜索文本時要匹配的一個或多個字符串。本文重點給大家介紹Python 正則表達式大全,感興趣的朋友一起看看吧
    2021-11-11
  • Python設(shè)計模式之觀察者模式原理與用法詳解

    Python設(shè)計模式之觀察者模式原理與用法詳解

    這篇文章主要介紹了Python設(shè)計模式之觀察者模式,簡單講述了觀察者模式的概念、原理并結(jié)合實例形式分析了Python實現(xiàn)與使用方法,需要的朋友可以參考下
    2019-01-01

最新評論

宝鸡市| 离岛区| 开化县| 田东县| 达孜县| 当雄县| 白玉县| 南投县| 武山县| 新疆| 金乡县| 罗平县| 昭平县| 开封县| 达拉特旗| 尚义县| 波密县| 华坪县| 莲花县| 铁岭县| 汝城县| 石门县| 张掖市| 镇平县| 吉林市| 彭山县| 凉山| 博爱县| 台东县| 平顶山市| 苍溪县| 梨树县| 泸溪县| 赤城县| 洪泽县| 广州市| 吉隆县| 将乐县| 凤庆县| 玛曲县| 石楼县|