在不使用任何内置函数的情况下查找字符串中的子字符串

时间:2013-04-04 23:18:10

标签: python-2.7

我必须在字符串中找到一个特定的子字符串,并在字符串中找到它的位置。这很容易但我不必在python中使用任何内置函数或方法。如果有人能提供帮助我真的很感激。感谢

string="ACAAGATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTGCTCTCCGGGGCCACGGCCACCGCTGCCCTGCCCCTGGAGGGTGGCCCCACCGGCCGAGACAGCGAGCATATGCAGGAAGCGGCAGGAATAAGGAAAAGCAGCCTCCTGACTTTCCTCGCTTGGTGGTTTGAGTGGACCTCCCAGGCCAGTGCCGGGCCCCTCATAGGAGAGGAAGCTCGGGAGGTGGCCAGGCGGCAGGAAGGCGCACCCCCCCAGCAATCCGCGCGCCGGGACAGAATGCCCTGCAGGAACTTCTTCTGGAAGACCTTCTCCTCCTGCAAATAAAACCTCACCCATGAATGCTCACGCAAGTTTAATTACAGACCTGAA"

子串= 'TTG'

3 个答案:

答案 0 :(得分:1)

如果您不想使用任何内置函数,此代码将起作用。

man = "ACAAGATGCCATTGTCCCCCGGCCTCCTGCTGCTGCTGCTCTCCGGGGCCACGGCCACCGCTGCCCTGCCCC$
check = "TTG"

for i in range (0, len(man)):
    if man[i]==check[0]:
            sum =0
            for j in range(0, len(check)):
                    if man[i+j] != check[j]:
                            break
                            sum = 0
                    else:
                            sum = sum +1
                            if sum == len(check):
                                print i

答案 1 :(得分:0)

没有任何内置函数很难实现这一点,因为您需要.npmignorelen来迭代当前索引的知识。

尽管,这是仅使用enumerate的实现。

len

如果您真的根本不需要内置,可以使用以下技巧。

def find(s, sub):
    idx = 0
    while idx < len(s):
        if s[i:len(sub)] == sub:
            return idx
    return -1

这当然有点作弊,因为迭代和切片对您的作用远不如许多内置函数。

答案 2 :(得分:-1)

如果您只想要字符串中的子字符串,可以使用:

str[12:15]

另一个例子:

a = '1234567890'
then 
>>> a[-3:-1]
'89'
>>> a[-3:]
'890'
>>> a[-2]
'9'
>>> a[5]
'6'