python中查找字符串


1、測試1

>>> seq = 'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg'    ## 定義測試字符串
>>> type(seq)
<class 'str'>=

使用find查找:

>>> seq.find('ATG')     ## 返回查找字符串的第一個索引 0
>>> seq.find('GTG')     ## 同上 2
>>> seq.find('XTG')     ## 當沒有匹配的字符串時, 返回-1 -1
>>> 

 

2、當有多個匹配的字符串時,返回每一個字符串的索引

>>> seq = 'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg'   ## 定義一個測試字符串
>>> seq
'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg'
>>> type(seq)
<class 'str'>
>>> def find_all(string, sub):       ## 定義查找函數, 兩個參數,一個是總字符串, 一個是要查找的字符串
    start = 0                       ## 定義查找的起始位置
    pos = []                        ## 定義空列表 while True:                     ## 設置循環條件
        start = string.find(sub, start)    ## 根據查找結果調整查找的起始位置 if start == -1:             ## 設置循環終止條件,即沒有匹配字符串時, 循環終止 return pos              ## 返回所有的查找結果
        pos.append(start)          ## 將每次查找到的字符串的起始索引添加至pos列表
        start += len(sub)          ## 當查找到字符時, 查找起始位置向后移動被字符串長度個單位 >>> find_all(seq, 'XXX')   ## 未匹配字符串情況
[]
>>> find_all(seq, 'ATG')   ## 一共查找到兩個字符串, 索引分別為0, 18
[0, 18]

 

3、使用re庫函數查找

>>> seq = 'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg'   ## 測試字符串
>>> seq
'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg'
>>> type(seq)
<class 'str'>
>>> import re       ## 導入re庫函數 >>> re.findall('ATG', seq)     ## 直接返回字符串列表
['ATG', 'ATG']
>>> [pos.start() for pos in re.finditer('ATG',seq)]    ## 返回字符串索引
[0, 18]
>>> re.findall('ATG', seq, flags=re.IGNORECASE)      ## flags = re.IGNORECASE, 忽略大小寫
['ATG', 'ATG', 'atg', 'Atg', 'AtG', 'aTG', 'aTg']
>>> [pos.start() for pos in re.finditer('ATG',seq, flags = re.IGNORECASE)]
[0, 18, 21, 24, 27, 30, 33]

 

來源:https://mp.weixin.qq.com/s?__biz=MzkyMTI1MTYxNA==&mid=2247496936&idx=1&sn=63eb0ed21f13af872ea7021b6b8b5b06&chksm=c184ce99f6f3478f07f4686abe3c8a82e7b7a1cc4d008c4bd49344f0759e9898bce06981c9fe&mpshare=1&scene=23&srcid=0319SfRKP46AoERwV8KNQ0te&sharer_sharetime=1647704088167&sharer_shareid=4ed060cc4cd1efce40e3ab6dd8d8c7d4#rd

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM