Вы можете просто использовать .count () непосредственно в строке:
with open('C:\IS452\week7\dracula.txt', 'r', encoding = 'utf=8') as f:
dracula_txt = f.read().lower()
blood_count = dracula_txt.count("blood")
print(blood_count, "mentions of blood in Dracula")
Если вы делаете это для какой-то задачи кодирования, когда вам не разрешено просто использовать .count(), тогда, возможно, вы можете сделать что-то вроде:
dracula_list = dracula_txt.split("blood") # split text into list separated by occurrences of "blood"
blood_count = len(dracula_list) - 1 # count of occurrences is the length of the list minus one
Если вы думаете, что это также будет обманывать, то вы можете попробовать что-то вроде:
index = blood_count = 0
while(index != -1):
try:
# we get the position of the next occurrence of "blood" in the string, starting from the position of the last occurrence plus one
index = dracula_txt.index("blood", index) + 1
blood_count += 1
except ValueError: # when there aren't any more occurrences of "blood" in the string, we get a ValueError and exit the loop
index = -1
print(blood_count, "mentions of blood in Dracula")
Или вы можете перебиратькаждый символ в строке, проверяя, соответствует ли подстрока, следующая за индексом символа, «кровью» и, соответственно, увеличивая счетчик:
blood_count = 0
for i in range(0, len(dracula_txt)):
if dracula_txt[i:i+5] == "blood":
blood_count += 1
print(blood_count)