Скажите, у меня есть следующий список.
food_list = ['ice cream', 'apple', 'pancake', 'sushi']
И я хочу найти каждый элемент в этом списке в следующей строке.
my_str = 'I had pancake for breakfast this morning, while my sister ate some apples. I brought one apple and ate it on my way to work. My coworker was having his birthday today, and he gave us free ice cream. It was the best ice cream I had this year.'
my_str = my_str.lower()
Iхотите посчитать количество элементов в строке.
ice cream : 2, apple: 1, pancake: 1, sushi:0
Обратите внимание, что яблоко считается только один раз, потому что apples
не должно учитываться.Я не могу разделить его по пробелам из-за таких элементов, как ice cream
.
Я думал о том, чтобы заменить слово в списке чем-то и посчитать это позже, но это очень медленно (применительно к большим данным).И мне интересно, есть ли лучшее решение.
for word in food_list:
find_word = re.sub(r'\b'+word+r'\b', "***", my_str)
count_word = find_word.count("***")
print(word+": "+str(count_word))
Надеюсь, это достаточно ясно.Спасибо