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