赞
踩
#从文件读取中文文本进行词频统计 排序后写入到文件 import zhon.hanzi from jieba import * # 函数功能:实现中文字符串的替换标点符号为空格并分词,将分词列表返回 def getlist(str): for c in zhon.hanzi.punctuation:#zhon.hanzi.punctuation为中文标点符号集 str=str.replace(c,"")#将标点符号替换成空格,不能是空,如果是空则导致结巴分词不准确 ls=lcut(str) return ls #获取列表的第二个元素,以进行sort()高级排序 def takeSecond(elem): return elem[1] #打开读取并关闭文件 file=open("2021中央一号文件.txt","rt",encoding="utf8") #此处大家根据自己文件的编码格式来给enconding赋值 s=file.read() file.close() #调用getlist自定义函数 ls=getlist(s) #删除中文空格符号 #方法1: n=ls.count("\n")#统计要删除的次数 for i in range(n):#循环删除ls列表中的每个\n ls.remove("\n") print(ls) #方法2:使用ls生成一个新列表,用来确定删除多少次,注意不能直接将ls赋值给一个列表 # newls=ls[::] # for i in newls: # if i=="\n": # ls.remove(i) # print(ls) #将分词及词频存储到字典中 counts={} for word in ls: counts[word] = counts.get(word,0) + 1 #将键值对转换为列表,每个列表元素为一个元组(单词,词频),并按照词频(元素第二个元素)进行排序 items=list(counts.items()) #items.sort(key=lambda x:x[1],reverse=True) items.sort(key=takeSecond,reverse=True) #将排序列表结果写入到文件 newfile=open("中文词频统计.txt","w+",encoding="utf8") for item in items: s=item[0]+" "+str(item[1]) +"\n" #将元组item转换为字符串,单词和次数之间用空格隔开 newfile.write(s) newfile.close()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。