【发布时间】:2013-06-04 12:45:49
【问题描述】:
我是 python 新手。我得到一个包含大约 2000 个文本文件的文件夹。我应该输出每个单词及其出现的次数(在文件中不重复)。例如,句子:“i am what i am”必须在文件中仅包含一次“i”。
我可以为单个文件执行此操作,但如何为多个文件执行此操作?
from collections import Counter
import re
def openfile(filename):
fh = open(filename, "r+")
str = fh.read()
fh.close()
return str
def removegarbage(str):
# Replace one or more non-word (non-alphanumeric) chars with a space
str = re.sub(r'\W+', ' ', str)
str = str.lower()
return str
def getwordbins(words):
cnt = Counter()
for word in words:
cnt[word] += 1
return cnt
def main(filename, topwords):
txt = openfile(filename)
txt = removegarbage(txt)
words = txt.split(' ')
bins = getwordbins(words)
for key, value in bins.most_common(topwords):
print key,value
main('speech.txt', 500)
【问题讨论】:
-
从你的例子看来,输出总是
1?此外,在我看来,您的代码不会输出2而不是1作为您的示例。 -
在脚本中为 count "cnt = Counter()" 创建一个全局变量,并在各自的函数中更新它。
-
使用
words = set(words)删除重复项。
标签: python data-mining