目前我有
import re
import string
input_file = open('documents.txt', 'r')
stopwords_file = open('stopwords_en.txt', 'r')
stopwords_list = []
for line in stopwords_file.readlines():
stopwords_list.extend(line.split())
stopwords_set = set(stopwords_list)
word_count = {}
for line in input_file.readlines():
words = line.strip()
words = words.translate(str.maketrans('','', string.punctuation))
words = re.findall('\w+', line)
for word in words:
if word.lower() in stopwords_set:
continue
word = word.lower()
if not word in word_count:
word_count[word] = 1
else:
word_count[word] = word_count[word] + 1
word_index = sorted(word_count.keys())
for word in word_index:
print (word, word_count[word])
它所做的是解析我拥有的一个txt文件,删除停止词,并输出一个词在它正在阅读的文档中出现的次数。
问题是txt文件不是一个文件,而是五个。
文档中的文本如下所示:
在Python中,我想找到一种方法,遍历1、2和3,并计算一个单词在单个文档中出现的次数,以及一个单词在整个文本文件中出现的总次数--我的代码目前就是这样做的。
例如,Mat在文本文档中出现了2次。它出现在文档1和文档2中,理想情况下不会太罗嗦。
2条答案
按热度按时间lc8prwob1#
给予看:
fdbelqdn2#
您删除了之前的类似问题和我的答案,所以我不确定是否应该再次回答。我将给出一个稍微不同的答案,不带
groupby
,尽管我认为它是好的。您可以尝试:
(\d+)\s*$"
的正则表达式在行首查找数字,在换行符之前不查找任何其他内容(可能除了一些空格),如果标识符遵循不同的逻辑,则必须调整它。word_count
将单词的每次出现记录在具有当前文档编号的列表中。word_count_overall
只取resp.列表的长度来获得单词的总计数。word_count_docs
确实对列表应用了Counter
,以获得每个文档中每个单词的计数。