Hello John, Thank you very much for your pointers! I decided to redo it and try to implement your suggestion. I think I did a fair job and because of your suggestion have a better iterator. Thank you!
def indexer(string, substring, overlap=1): '''indexer(string, substring, [overlap=1]) -> int indexer takes a string and searches it to return all substring indexes. by default indexer is set to overlap all occurrences. to get the index to whole words only, set the overlap argument to the length of the substring. The only pitfall to indexer is it will return the substring whether it stansalone or not. >>> list(indexer('ababababa', 'aba')) [0, 2, 4, 6] >>> list(indexer('ababababa', 'aba', len('aba'))) [0, 4] >>> list(indexer('ababababa', 'xxx')) [] >>> list(indexer('show chow', 'how')) [1, 6] ''' index = string.find(substring) if index != -1: yield index while index != -1: index = string.find(substring, index + overlap) if index == -1: continue yield index if __name__ == '__main__': print list(indexer('ababababa', 'aba')) # -> [0, 2, 4, 6] print list(indexer('ababababa', 'aba', len('aba'))) # -> [0, 4] print list(indexer('ababababa', 'xxx')) # -> [] print list(indexer('show chow', 'how')) # -> [1, 6] -- http://mail.python.org/mailman/listinfo/python-list