[python]你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词。

第 0006 题:你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词。

思路:1.打开目录文件
2.统计文件中单词的统计个数,保存在dic中
3.找出dic中value较大对应的value值
代码是在第四题的基础上做了少许修改。第四题链接

代码如下:

#coding=utf-8
import os
import re

path='F:/Python/practice/6/'
filelist=os.listdir(path)
list=''
def get_word_frequencies(file_name):
    dic = {}
    txt = open(file_name, 'r').read().splitlines()

    n=0
    for line in txt:
        #print line
        line = re.sub(r'[.?!,""/]', ' ', line)   #要替换的标点符号,英文字符可能出现的
        line = re.sub(r' - ', ' ', line)  
        for word in line.split():

            #当一行的最后一个字符是-的时候,需要跟下一个英文字符串联起来构成单词
            if word[-1] =='-':
                    m=word[:-1]
                    n=1
                    break
            if n==1:
                word=m+word
                n=0
            #print word
            dic.setdefault(word.lower(), 0)  #不区分大小写
            dic[word.lower()] += 1

    return dic

count=5 
for file in filelist: 
    if re.match(file[-4:],'.txt'):         #提出日记目录中非txt文件
        #print file
        filepath=path+file
        print filepath
        dic=get_word_frequencies(filepath) 
        #选出对应value最大的key值,作为重要的词,其中可以通过判断key值字母个数做简单筛选 
        for k in dic:
            if dic[k]>count:
                print k

#print dic

PS:因为有做过第四题,想到第6题只是多了第一步和第三步,所以很理所当然这么去做了,然后在将单词统计次数保存到字典中后,需要对value中进行排序,但由于字典键值不同的特殊性下,没法使用sort排序方法,所以我在此直接设定一个count值是很不严谨的,所以我去网上搜索了别人的处理方法,链接
了解到collections模块,用来解决统计单词问题更简单方便,可以参考。

你可能感兴趣的:(python,python)