2016-11-15 60 views
1

因此,即时通讯尝试搜索以查看file2.txt中的每行是否包含file1中的任何单词.TXT 1.因此,如果例如:分析一个文件中的单词并检查它们是否在另一个文件的每一行中... ...在Python中的问题

文件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) 

回答

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供以后使用。

+0

就在我试用它并更改我的代码之前,该方法是否会分别计算每行中关键字的数量? (比如如果一个人有4个关键字,那么总数是4) – HelloWorld4382

+0

对于每一行,它打印一个相关词的词典和频率。因此,对于“我爱爱这部新电影,这是最好的”,它会输出'{'love':3,'best':1}'。我刚刚明白你的意思是“总数”和“关键字”,给我一分钟。 – L3viathan

+0

@ HelloWorld4382我增加了如何获得最后两次调用print的关键字的总数和数量。 – L3viathan

相关问题