欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python如何查找所有子串位置

 更新時間:2023年01月03日 10:38:38   作者:cv_lhp  
這篇文章主要介紹了python如何查找所有子串位置問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

python 查找所有子串位置

方法1

python 字符串中的find只能返回第一次出現的位置,可以利用find找出多有子串出現的位置:

def find_all(sub,s):
?? ?index_list = []
?? ?index = s.find(sub)
?? ?while index != -1:
?? ??? ?index_list.append(index)
?? ??? ?index = s.find(sub,index+1)
?? ?
?? ?if len(index_list) > 0:
?? ??? ?return index_list
?? ?else:
?? ??? ?return -1

方法2

使用re包來實現,直接通過循環(huán)來實現,然后返回找到的pattern的起始位置和終止位置。

import re
string = 'You said I was your life. Are you still alive when you lost it?'
pattern = 'you'
for m in re.finditer(pattern, string):
? ? print(m.start(), m.end())?

補充

1、str.find()函數:檢測 str 是否包含在 string 中,如果 beg 和 end 指定范圍,則檢查是否包含在指定范圍內,如果是返回開始的索引值,否則返回-1。

str.find(substring, beg=0, end=len(string))

2、str.index()函數:跟find()方法一樣,只不過如果str不在 string中會報一個異常。

str.index(substring, beg=0, end=len(string))

Python小知識:查找子串問題

查找子串

查找一個字符串中是否包含某個關鍵詞(查找子串問題)是很常見的操作。比如:給定一句話s,查找s中是否包含關鍵詞王嘉爾。

今天來說3個相關的方法,以及它們的區(qū)別和優(yōu)缺點。

in 操作符

如果只是為了判斷s中是否包含王嘉爾,最推薦的做法是用in或者not in操作符:

s = '王嘉爾小時候賣過豬'
print('王嘉爾' in s)

s2 = '王嘉爾小時候吃過豬'
print('王嘉爾' in s2)

in操作符返回True或者False,而且運行最快,是首選!

咱們加深一下,每一個Python的操作符背后都有一個魔法方法。當我們使用in操作符的時候,它調用的是__contains__方法。

如果我們自己定義一個類,也要支持in和not in運算符,只要實現__contains__方法就可以了。

find函數

s = '王嘉爾小時候賣過豬'
print(s.find('王嘉爾'))
print(s.find('王嘉爾') != -1)

s2 = '王嘉爾小時候吃過豬'
print(s2.find('王嘉爾'))
print(s2.find('王嘉爾') != -1)

運行結果:

0
True
-1
False

find函數返回子串的下標,如果找不到就返回-1。s中包含王嘉爾,返回下標0。我們可以通過比較返回值和-1來確定是否包含子串。

index函數

index函數和find類似,也是返回子串在父串中的下標:

s = '王嘉爾小時候賣過豬'
print(s.index('王嘉爾'))
print(s.index('王嘉爾') != -1)

運行結果是:

0
True

但是index和find有個大的差別,如果父串中沒有包含子串,會報ValueError。

看下面的代碼:

s2 = '王嘉爾小時候吃過豬'
print(s2.index('王嘉爾'))

運行結果是:

ValueError: substring not found

看起來index比較弱,為什么它還有存在的價值呢?因為index是序列(sequence)的方法,在字符串,列表,元組中都可以用,而find是字符串特有的函數。

小結一下:如果只是看是否存在,直接用in操作符;如果還要找出下標,用find不會報錯,但是index可以應用的范圍更廣。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • python樣條插值的實現代碼

    python樣條插值的實現代碼

    這篇文章主要為大家詳細介紹了python樣條插值的實現代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Python爬蟲設置代理IP(圖文)

    Python爬蟲設置代理IP(圖文)

    在本篇內容里小編給大家分享了關于Python爬蟲設置代理IP的相關知識點和步驟,需要的朋友們參考下。
    2018-12-12
  • python的urllib.parse用法及說明

    python的urllib.parse用法及說明

    這篇文章主要介紹了python的urllib.parse用法及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python?中的?BeautifulSoup?網頁使用方法解析

    python?中的?BeautifulSoup?網頁使用方法解析

    這篇文章主要介紹了python?中的?BeautifulSoup?網頁使用方法解析,文章基于python的相關資料展開詳細內容介紹,具有一定的參考價值需要的小伙伴可以參考一下
    2022-04-04
  • Python中字符串列表的相互轉換實際應用場景

    Python中字符串列表的相互轉換實際應用場景

    在Python編程中,經常會遇到需要將字符串列表相互轉換的情況,這涉及到將逗號分隔的字符串轉換為列表,或者將列表中的元素連接成一個字符串,本文將深入討論這些情景,并提供豐富的示例代碼,幫助讀者更全面地理解字符串列表的轉換操作
    2023-12-12
  • Python實現隨機漫步的詳細過程

    Python實現隨機漫步的詳細過程

    隨機漫步顧名思義每一步都是隨機的,假設有一個點,下一步往哪里走,走多遠,這些都沒有明確的表示,完全是隨機的,最后走到哪里,是由一系列隨機決策決定的,這篇文章主要給大家介紹了關于Python實現隨機漫步的相關資料,需要的朋友可以參考下
    2023-03-03
  • python 轉換 Javascript %u 字符串為python unicode的代碼

    python 轉換 Javascript %u 字符串為python unicode的代碼

    這篇文章主要介紹了python 轉換 Javascript %u 字符串為python unicode的代碼,需要的朋友可以參考下
    2016-09-09
  • python基礎之內置函數

    python基礎之內置函數

    這篇文章主要介紹了python內置函數,實例分析了Python中返回一個返回值與多個返回值的方法,需要的朋友可以參考下
    2021-10-10
  • Python pickle模塊常用方法代碼實例

    Python pickle模塊常用方法代碼實例

    這篇文章主要介紹了Python pickle模塊常用方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 帶你一文搞懂Python文件的讀寫操作

    帶你一文搞懂Python文件的讀寫操作

    讀寫文件是最常見的IO操作,Python內置了讀寫文件的函數,下面這篇文章主要給大家介紹了關于Python文件讀寫操作的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05

最新評論