python 中 查找字符串

 

001、首个字符查找

>>> seq = 'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg'           ## 测试字符串
>>> seq.find('ATG')                                        ## 字符串内建函数find返回第一个匹配字符的索引
0
>>> seq.find('GAC')
4

 

>>> seq.find('XXX')                                        ## 若找不到,则返回-1
-1

 

002、返回字符串中指定字符的所有索引

(base) root@PC1:/home/test2# ls
test.py
(base) root@PC1:/home/test2# cat test.py        ## 测试程序
#!/usr/bin/python

def str_search(str1):
    result_index = []
    start = 0
    while True:
        index = str1.find("At",start)
        if index == -1:
            return result_index
        else:
            result_index.append(index)
        start = index + len("At")

seq = 'ATAtGAACCTGATTTTGAATGatgAtgAtGaTGaTg'
print(str_search(seq))
(base) root@PC1:/home/test2# python test.py     ## 返回字符串seq中“At”字符的所有索引
[2, 24, 27]

 

003、

>>> seq = 'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg'     ## 测试序列
>>> re.findall('ATG',seq)
['ATG', 'ATG']
>>> re.finditer('ATG',seq)
<callable_iterator object at 0x7f13054602b0>
>>> for i in re.finditer('ATG',seq):                     ## 返回匹配字符的span
...     print(i)
...
<re.Match object; span=(0, 3), match='ATG'>
<re.Match object; span=(18, 21), match='ATG'>
>>> [pos.start() for pos in re.finditer('ATG',seq)]      ## 利用列表内循环返回匹配字符串首个字符的索引   
[0, 18]

 

004、 查找字符串 忽略大小写

>>> seq = 'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg'          ## 测试序列
>>> re.findall('ATG',seq,flags=re.IGNORECASE)             ## 增加 flags = re.IGNORECASE 忽略大小写
['ATG', 'ATG', 'atg', 'Atg', 'AtG', 'aTG', 'aTg']

 

>>> seq = 'ATGTGACCCTGATTTTGAATGatgAtgAtGaTGaTg'          ## 测试序列
>>> re.findall('ATG',seq,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&scene=178&cur_album_id=2173400650154409988#rd

 

posted @ 2022-08-12 14:32  小鲨鱼2018  阅读(455)  评论(0编辑  收藏  举报