На этот раз основной вопрос.
когда вы видите строку типа "isisisisisi"
сколько "isi" вы считаете?
в первом состоянии вы видите строку "isi s isi s isi"
и возвращаете 3 в качестве счетчика.
во втором состоянии вы видите строку "isisisisisi"
и подсчитывает время буксировки "i" для каждой фразы, как это "isi isi isi isi isi"
.
Другими словами, второе «i» является последним символом первого «isi» и первым символом второго «isi».
так что вы должны вернуть 5 как количество.
для первого состояния просто можно использовать:
>>> string = "isisisisisi"
>>> string.count("isi")
3
и для второго состояния вы должны распознать "phrase"+"anything"+"phrase"
в поисковом слове.
нижеследующая функция может сделать это:
def find_iterate(Str):
i = 1
cnt = 0
while Str[i-1] == Str[-i] and i < len(Str)/2:
i += 1
cnt += 1
return Str[0:cnt+1]
Теперь у вас есть много вариантов подсчета поискового ключевого слова в строке.
например я делаю так ниже:
if __name__ == "__main__":
search_keyword = "isi"
String = "isisisisisi"
itterated_part = find_iterate(search_keyword)
c = 0
while search_keyword in String:
c += String.count(search_keyword)
String = String.replace(search_keyword, itterated_part)
print c
Я не знаю, есть ли лучший способ в python.но я пытался сделать это с помощью регулярных выражений, но не нашел пути.