Я хочу сделать анализ настроений, но хочу использовать только элементы списка, содержащего определенное слово. Речь идет о комментариях, и я только хочу, чтобы проанализировать комментарии, которыеВыбор определенных элементов, содержащих определенное слово из списка в python
Например, мой список является:
comments = ["nice blog","i like your blog","nivea is a nice product","i like nivea"]
Как создать список, в котором добавляются только комментарии, которые содержат слово «Nivea»?
Так что я хочу, чтобы мой окончательный список будет:
commentsfinal = ["nivea is a nice product","i like nivea"]
Я попытался подсчитать общее количество комментариев (так не общая сумма Nivea упоминает, но на самом деле комментарии), где упоминается Nivea по-разному. Все разные способы привели к разным результатам, может ли кто-нибудь помочь мне, какой из них правильный и почему?
Первая попытка:
niveaucountlist=[]
match="nivea"
for comment in allcomments:
niveacount=0
for word in comment.split():
if word in match:
niveacount+=1
niveacountlist.append(niveacount)
total=sum(niveacount)
Это у меня исход 4547 комментариев
Вторая попытка: Вторая вещь, которую я попытался было сделать список, в котором каждый комментарий оценивается с общей когда упоминается нивеа. я получил список, как:
niveacountlist=[1,0,0,1,2,0]
Затем я удалил все элементы, которые имели нулевое значение (потому что те комментарии, которые не о Nivea
niveacountlistpos=[x for x in niveacountlist if x != 0]
print(len(niveacountlistpos))
Это привело 3771 комментариев ..
Последняя попытка: Моя последняя попытка была то, что вы, ребята ответили мне на мой первый вопрос, так как я использовал регулярное выражение и сделал:.
import re
nivealist=[x for x in allcomments if re.search("nivea",x)]
Это привело к 2583 комментариям.
Итак, что происходит прямо здесь? Может ли кто-нибудь объяснить мне, почему результаты все разные?
--- Еще один (последний) вопрос, который у меня есть, касается того, как я посчитал общее количество упоминаний о Нивее (так что сумма всех времен, когда была отмечена в комментариях). Я пытался сделать это, сделав строку всех комментариев (так называемые allwords) вместе, а затем сделал это:
match="nivea"
niveacount1=0
for word in allwords:
niveacount1+=1
print(niveacount1)
Правильно ли это? Или я могу сделать это лучше.
Большое вам спасибо! Я узнал о регулярных выражениях, но я попытался использовать параметр re.match или re.findall, но это не сработало. Это работает! Можете ли вы объяснить, что происходит, когда вы говорите: x для x в комментариях? Можно ли заменить x другим? –
Да, вы можете, x для x принимает каждый элемент из комментариев с именем x и помещает его в список, если re.search находит шаблон. Это похоже на регулярный цикл с добавлением списка, но в одной строке. –
Хорошо, спасибо! Теперь я немного смущен, потому что я попытался использовать разные способы, чтобы получить общее количество комментариев, в которых упоминается бренд. И все способы, которые я пытался, привели к различным ответам. Не могли бы вы объяснить, что происходит? Я напишу это в своем первом поле вопроса. –