поиск подстроки - PullRequest
1 голос
/ 23 мая 2009

Заранее спасибо. Я хочу найти всю подстроку, которая находится между K и N, даже если K и N встречаются в любом количестве раз. например
а = 'KANNKAAN'

OUTPUT;
[KANNKAAN, KANN, KAN, KAAN]

Ответы [ 2 ]

2 голосов
/ 23 мая 2009
import re

def occurences(ch_searched, str_input):
    return [i.start() for i in re.finditer(ch_searched, str_input)]

def betweeners(str_input, ch_from, ch_to):
    starts = occurences(ch_from, str_input)
    ends = occurences(ch_to, str_input)
    result = []
    for start in starts:
        for end in ends:
            if start<end:
                result.append( str_input[start:end+1] )
    return result

print betweeners('KANNKAAN', "K", "N")

Это то, что Вам нужно?

1 голос
/ 23 мая 2009

Другой способ:

def findbetween(text, begin, end):
    for match in re.findall(begin + '.*' +end, text):
        yield match
        for m in findbetween(match[1:], begin, end):
            yield m
        for m in findbetween(match[:-1], begin, end):
            yield m

>>> list(findbetween('KANNKAAN', 'K', 'N'))
['KANNKAAN', 'KAAN', 'KANN', 'KAN']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...