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

Python查找第n個(gè)子串的技巧分享

 更新時(shí)間:2018年06月27日 10:25:45   作者:WarmSword  
今天小編就為大家分享一篇Python查找第n個(gè)子串的技巧心得,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

Problem

Python中str類自帶的find、index方法可以返回第一個(gè)匹配的子串的位置,但是如果實(shí)際使用中需要查找第2個(gè)甚至第n個(gè)子串的位置該怎么辦呢。也許有的碼友可能會(huì)用到第二第三個(gè)參數(shù),指定查找的起始、終止位置。但是在很多情況下,接收到的一個(gè)字符串可能是未知的,強(qiáng)制限定起始位置可能導(dǎo)致代碼在某些情況下不能適用。

Solution

采用嵌套的方法調(diào)用find或者index。

 str_exp = "aaabbbbccc"
 pos_n = str_exp.index("a", str_exp.index("a")+1)
 print(pos_n)

原理很簡(jiǎn)單,第一次查找返回的位置加1作為第二次查找的起始參數(shù)。加1是因?yàn)閟tart參數(shù)位置是被包含的,采用的閉區(qū)間的語(yǔ)義。也不用擔(dān)心會(huì)越界,python底層已經(jīng)做了處理。

也可以寫一個(gè)單獨(dú)的函數(shù)來(lái)進(jìn)行查找操作。

def find_n_sub_str(src, sub, pos, start):
 index = src.find(sub, start)
 if index != -1 and pos > 0:
  return find_n_sub_str(src, sub, pos - 1, index + 1)
 return index

pos表示第n個(gè)子串,從0開(kāi)始。start為起始位置。此處使用find而不用index是因?yàn)閕ndex在查找失敗時(shí)會(huì)報(bào)出異常,而find不報(bào)異常返回-1。從健壯性考慮使用find。

看來(lái)遞歸使用起來(lái)還是可以解決很多編程實(shí)踐過(guò)程中遇到的工程問(wèn)題。:)

Attention

1、左閉右開(kāi)特性

str.index(self, sub, start=None, end=None)
str_tmp[start:end]

默認(rèn)的是左閉右開(kāi),即包含start的位置,卻不包含end的位置。在使用過(guò)程中需要注意一下。同樣左閉右開(kāi)的還有切片操作str_tmp[start:end]。

示例如下:

 str_exp = "aaabbbbccc"
 print(str_exp)
 print(str_exp[str_exp.index("a"):str_exp.rindex("c")])
aaabbbbccc
aaabbbbcc

2、find與index差別

find是不會(huì)報(bào)出異常的,即查找子串失敗的情況下返回-1,而index在查找子串失敗時(shí)會(huì)報(bào)異常。

示例如下:

 str_tmp = "aaaabbbbccccdddd"
 print(find_n_sub_str(str_tmp, "a", 5, 0))
 print(str_tmp.find("a", 7))
 print(str_tmp.index("a", 7))
-1
-1
Traceback (most recent call last):
 File "/usr/local/pycharm-community-5.0.4/helpers/pydev/pydevd.py", line 2411, in <module>
 globals = debugger.run(setup['file'], None, None, is_module)
 File "/usr/local/pycharm-community-5.0.4/helpers/pydev/pydevd.py", line 1802, in run
 launch(file, globals, locals) # execute the script
 File "/usr/local/pycharm-community-5.0.4/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
 exec(compile(contents+"\n", file, 'exec'), glob, loc) 
 File "/usr/local/workspace/pycharmPro/StockAI/StockAI/DbDealer.py", line 140, in <module>
 print(str_tmp.index("a", 7))
ValueError: substring not found

以上這篇Python查找第n個(gè)子串的技巧分享就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Python中魔法方法的使用

    詳解Python中魔法方法的使用

    Python的魔法方法,也稱為dunder(雙下劃線)方法,是可以讓你對(duì)類添加“魔法”的特殊方法。本文主要來(lái)和大家聊聊魔法方法的使用,需要的可以參考一下
    2022-12-12
  • django inspectdb 操作已有數(shù)據(jù)庫(kù)數(shù)據(jù)的使用步驟

    django inspectdb 操作已有數(shù)據(jù)庫(kù)數(shù)據(jù)的使用步驟

    這篇文章主要介紹了django inspectdb 操作已有數(shù)據(jù)庫(kù)數(shù)據(jù)的使用步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • python去除字符串中的空格、特殊字符和指定字符的三種方法

    python去除字符串中的空格、特殊字符和指定字符的三種方法

    本文主要介紹了python去除字符串中的空格、特殊字符和指定字符的三種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python def 定義函數(shù),調(diào)用函數(shù)方式

    python def 定義函數(shù),調(diào)用函數(shù)方式

    這篇文章主要介紹了python def 定義函數(shù),調(diào)用函數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python通用讀取vcf文件的類(復(fù)制粘貼即可用)

    python通用讀取vcf文件的類(復(fù)制粘貼即可用)

    這篇文章主要介紹了python通用讀取vcf文件的類(可以直接復(fù)制粘貼使用) ,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python操作字典類型的常用方法(推薦)

    python操作字典類型的常用方法(推薦)

    下面小編就為大家?guī)?lái)一篇python操作字典類型的常用方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • Python批量刪除txt文本指定行的思路與代碼

    Python批量刪除txt文本指定行的思路與代碼

    在深度學(xué)習(xí)項(xiàng)目中常常會(huì)處理各種數(shù)據(jù)集,下面這篇文章主要給大家介紹了關(guān)于Python批量刪除txt文本指定行的思路與代碼,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Python Request類源碼實(shí)現(xiàn)方法及原理解析

    Python Request類源碼實(shí)現(xiàn)方法及原理解析

    這篇文章主要介紹了Python Request類源碼實(shí)現(xiàn)方法及原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • python讀取圖片的幾種方式及圖像寬和高的存儲(chǔ)順序

    python讀取圖片的幾種方式及圖像寬和高的存儲(chǔ)順序

    這篇文章主要介紹了python讀取圖片的幾種方式及圖像寬和高的存儲(chǔ)順序,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python中Flask-RESTful編寫API接口(小白入門)

    Python中Flask-RESTful編寫API接口(小白入門)

    這篇文章主要介紹了Python中Flask-RESTful編寫API接口(小白入門),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評(píng)論

巴彦淖尔市| 稷山县| 徐闻县| 互助| 漯河市| 东源县| 霍城县| 锡林郭勒盟| 金溪县| 安溪县| 阜城县| 交城县| 临洮县| 宜黄县| 宜兰县| 滦平县| 屏边| 长沙市| 湾仔区| 阳信县| 庐江县| 滦南县| 株洲县| 兴仁县| 额尔古纳市| 钦州市| 宾川县| 靖江市| 滁州市| 诏安县| 瑞金市| 泉州市| 崇仁县| 石城县| 张家港市| 万盛区| 炉霍县| 瓦房店市| 泉州市| 乌拉特后旗| 龙泉市|