所以,我试图搜索一下file2.txt中的每一行是否包含file1.txt中的任何单词1.所以如果例如:
文件1:
love,10
like,5
best,10
hate,1
lol,10
better,10
worst,1
文件2:我想看的一堆句子,如果它包含任何file1(超过200行)
我有一种方法可以在我的程序中使用我自己的文件来实现这一点,并且它可以工作,但它将总值添加到一个大列表中(如果整个文件说爱43次,那么爱:43,但我'我正在为每一行寻找单独的列表..所以如果一行包含爱4次而另外5次,那么程序将指示这个... **具体来说,我要做的是总计每行中的关键字数量该文件的行(如果一行包含4个关键字,则该行的总数为4,以及与关键字关联的值(因此您在我的示例文件中看到如何与关键字关联的值?如果一行中的一行)文件是:Hi I love my boyfriend but I like my bestfriend lol
然后就像{Love: 1, like: , lol:1}(keywords = 3, Total = 25
一样(总数来自列表中与它们相关的值)
如果第二行只是
I hate my life. It is the worst day ever!
那么这将是{hate: 1, worst: 1}(keywords = 2, total = 2
我有这个,它有效,但有没有办法修改它,而不是打印一个大的行,如:
{'please': 24, 'worst': 40, 'regrets': 1, 'hate': 70,... etc,} it simply adds the total number of keywords per line and the values associated with them?
wordcount = {}
with open('mainWords.txt', 'r') as f1, open('sentences.txt', 'r') as f2:
words = f1.read().split()
wordcount = { word.split(',')[0] : 0 for word in words}
for line in f2:
line_split = line.split()
for word in line_split:
if word in wordcount:
wordcount[word] += 1
print(wordcount)
答案 0 :(得分:1)
像往常一样,collections
拯救了这一天:
from collections import Counter
with open('mainWords.txt') as f:
sentiments = {word: int(value)
for word, value in
(line.split(",") for line in f)
}
with open('sentences.txt') as f:
for line in f:
values = Counter(word for word in line.split() if word in sentiments)
print(values)
print(sum(values[word]*sentiments[word] for word in values)) # total
print(len(values)) # keywords
您在字典sentiments
中有情感极性供以后使用。