梅小雨 20180912-3 词频统计

此作业的要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/6583

代码:https://meixiaoyu.coding.net/p/cipintongji/git

词频统计 SPEC 20180918

功能1 小文件输入。 为表明程序能跑,结果真实而不是迫害老五,请他亲自键
盘在控制台下输入命令。

重难点分析:1.需要将wf.py文件生成wf.exe文件

                      2.实现文件的读取

代码片段:

 def main():
        infile=open(filename,'r')
        count=100
        words=[]
        data=[]
    #读取文件

wordCounts={}
for line in infile:
processLine(line.lower(), wordCounts)
pairs = list(wordCounts.items())

#记录词频数
print("total : %d\n"% len(pairs))
items = [[x,y]for (y,x)in pairs]
items.sort()
for i in range(len(items) - 1, -1 , -1):
print(items[i][1] + "\t" + str(items[i][0]))
data.append(items[i][0])
words.append(items[i][1])
infile.close()

#按词频数进行排序

运行结果如图所示:

 

  功能2 支持命令行输入英文作品的文件名,请老五亲自录入。

重难点分析:文件更大,需要对出现频数不同的字符排序

代码片段:

 tf = {}
        for word in word_list2:
            word = word.lower()
                # print(word)
            word = ''.join(word.split())
            if word in tf:
                tf[word] += 1
            else:
                tf[word] = 1
        return tf

    def get_counts(words):
        tf = {}
        for word in words:
            word = word.lower()
            # print(word)
            word = ''.join(word.split())
            if word in tf:
                tf[word] += 1
            else:
                tf[word] = 1
#统计词频

frequencyDic = sorted(frequencyDic.items(), key = lambda x: x[1],
reverse = True)

print('total', len(frequencyDic), 'words', '\n')

if (len(frequencyDic) <= 10):
for x in range(0,len(frequencyDic)):
the_word = frequencyDic[x][0]
the_num = frequencyDic[x][1]
print('%-10s %-10s' %(the_word, the_num))
else:
for x in range(0,10):
the_word = frequencyDic[x][0]
the_num = frequencyDic[x][1]
print('%-10s %-10s' %(the_word, the_num))
print('----')

#根据频数排序,得到频数最高的前十个词

运行效果图:

 功能3 支持命令行输入存储有英文作品文件的目录名,批量统计。
>dir folder
gone_with_the_wand
runbinson
janelove
>wf folder
gone_with_the_wand
total 1234567 words
the 5023
a 4783
love 4572
fire 4322
run 3822
cheat 3023
girls 2783
girl 2572
slave 1322
buy 822
----
runbinson
total 1234567 words

重难点:批量读取文件

代码:

textFolder = folderName
    fileNameList = []
    for folder in folderList:
        if textFolder == folder:
            path1= os.listdir(folder)
            for i in path1:
                if os.path.splitext(i)[1] == '.txt':
                    fileNameList.append(os.path.splitext(i)[0])
#读取文件夹中文件进行批量读取

运行效果图:

功能4 从控制台读入英文单篇作品,这不是为了打脸老五,而是为了向你女朋
友炫酷,表明你能提供更适合嵌入脚本中的作品(或者如她所说,不过是更灵活
的接口)

关于重定向捕获的文件方面理解不清晰,查阅了相关资料,简单写了一些代码,但是还没有实现。

def main(argv):
    if sys.argv[1] == '-h':
        print ('test.py -i -s filename.txt')
        sys.exit()
    elif sys.argv[1]=="-s":
        if(len(sys.argv)==3):
        countFileWords(sys.argv[2])
        else:
        redirect_words = sys.stdin.read() 

psp表格

猜你喜欢

转载自www.cnblogs.com/MAY6/p/11538294.html