Другие ответы дали хорошие решения. Если вы хотите заново изобрести колесо, вот один из способов.
text = "fhihihi"
target = "hi"
l = len(target)
i = 0
c = 0
new_string_list = []
while i < len(text):
if text[i:i + l] == target:
new_string_list.append(str(c))
i += l
c += 1
continue
new_string_list.append(text[i])
i += 1
print("".join(new_string_list))
Использовал список для предотвращения последовательного создания строки.