返回第一个字符串中出现所有第二个字符串的索引

时间:2016-10-24 19:58:33

标签: python

def abc(a, b):
    '''(str, str) -> list of int

>>> abc('ABCDEAADFET', 'ABCDE')
[0,1,2,3,4,5]
>>> abc('ABCDEAADFEABCDET', 'ABCDE')
[0,1,2,3,4,10,11,12,13,14]
>>> abc('SDFECAADFET', 'ABCDE')
[]


# how to do this ? especially the second case
# use a.find.()

1 个答案:

答案 0 :(得分:-1)

这样做的简单方法是创建一个函数:

def my_function(my_string, my_substring):
    len_substring = len(my_substring)
    my_index = []
    for i in range(len(my_string)-len_substring+1):
        if my_string[i:i+len_substring] == my_substring:
             my_index.extend(range(i, i+len_substring))
    return my_index

说明:

迭代你的字符串以检查子串的匹配。如果匹配,请将相应的索引添加到列表中。

示例运行:

>>> my_function('ABCDEAADFET', 'ABCDE')
[0, 1, 2, 3, 4]
>>> my_function('ABCDEAADFEABCDET', 'ABCDE')
[0, 1, 2, 3, 4, 10, 11, 12, 13, 14]
>>> my_function('SDFECAADFET', 'ABCDE')
[]