如何在python中找到文本字符串中子字符串的起始位置?

问题描述 投票:0回答:2

这个问题提供了一个大字符串和一个子字符串。我要做的是编写一个代码,可以从大字符串中查找子字符串,并输出找到的子字符串的.start()位置。例如:样本数据集GATATATGCATATACTT ATAT样本输出2 4 10

所以我编写了一个代码(如下所示),但是,我注意到代码会跳过示例数据集中的第4位,因为第4位的一半是2?

请告诉我如何解决这个问题。非常感谢sooooo !!!

import re
filename = open(input())
txt=filename.readline()
rlist=[]
text= "ATAT"
for m in re.finditer (text, txt):
    d = m.start()
    d += 1
    rlist.append(d)
print (rlist)
python
2个回答
0
投票
length=len(text)
rlist=[]
for i in range(len(txt)):
    if length+i < len(txt):
        if txt[i:i+length] == text:
            rlist.append(i+1)
print (rlist)

试试这个!这里第一个条件用于检查数组索引超出绑定异常


0
投票

这将在不使用re的情况下工作。请注意,我注释掉了您的文件导入部分,以便您可以只测试找到文本的片段。

#filename = open(input())
#txt=filename.readline()
txt='GATATATGCATATACTTATAT'
rlist=[]
text= "ATAT"
index=0
rlist=[]
while index < len(txt):   #loop through the text advancing one character at a time
        index = txt.find(text, index)
        if index == -1:
            break
        rlist.append(index+1)
        index += 1 # increment the index

print(rlist)
Out: [2, 4, 10, 18]

我的答案基于this。这个解决方案的优点是循环只需要运行n+1次,其中n是文本中子串的数量。

© www.soinside.com 2019 - 2024. All rights reserved.