很简单的一个实现,当初以为很复杂。把附录的文件贴上就行
# -*- coding: utf-8 -*-
"""
Created on Tue Mar 5 14:29:02 2019
@author: psdz
"""
#jieba库是用来分词的库
import jieba
import jieba.analyse
#是用来进行计算机系统操作的库
import io
import os
import os.path
import csv
from string import punctuation
#正则表达式库
import re
import sys
#处理汉字的中文文字库
from zhon.hanzi import punctuation
#sys.stdout = io.TextIOWrapper(sys.stdout,encoding='utf8') #改变标准输出的默认编码
#这里放着你要操作的文件夹名称
root_path = '冯唐作品集'
#用来存储统计好之后词频文件存放的位置
csv_root = "冯唐作品词频统计"
#目录下的文件名全部获取保存在files中
files = os.listdir(root_path)
#创建文件夹,用来存储统计之后的词频,放到csv文件里面
if not os.path.exists(csv_root):
#创建文件夹
os.mkdir(csv_root)
#创建用来统计词频的csv文件
def csv_create(name):
full_path = csv_root +"/"+ name + '.csv'
#创建文件,已写入的方式打开,但是不写,创建完毕之后就关闭文件
file = open(full_path,'w')
#关闭文件
file.close()
#返回csv文件的路径,获取文件路径以便写入
return full_path
#将文件夹中所有文件名字进行读取
for file in files :
#准确获取一个txt的位置,利用字符串的拼接
file_path = root_path +"/"+ file
#打开相应的txt文件
text = open(file_path,"r", encoding='utf-8').read()
#去掉中文标点
text = re.sub("[{}]+".format(punctuation), "", text)
#使用jieba进行分词,精确模式,返回列表
words=jieba.lcut(text)
counts={}
#创建对应文章的csv文件
csv_path = csv_create(file)
out = open(csv_path , 'a',encoding='utf-8')
#设定写入模式
csv_write = csv.writer(out,dialect='excel')
#将文章的词汇进行分词
for word in words:
counts[word]=counts.get(word,0)+1
#items转list类型
items=list(counts.items())
#应该是按照出现的频率进行排序功能,后期再查
items.sort(key=lambda x:x[1],reverse=True)
#开始写入csv文件
#for i in range(0, len(words) - word_str - 100):
for i in range(len(items)-1):
word,count=items[i]
#csv写入具体内容
_str = word,count
csv_write.writerow(_str)
文档可以在我的下载去找,冯唐作品集,或者自己随意找一篇中文文章,刚发现下载要5积分
https://download.youkuaiyun.com/download/lee18254290736/11009355