文本内容分词-统计出现频率

2020-11-24  本文已影响0人  小帅明3号
import os
from datetime import datetime
import jieba
import xlwt

#同目录下多个Excel合并成一个

#需要将这个文件放到根目录下
jieba.set_dictionary("dict.txt")
jieba.initialize()

#初始化全局变量

exit_='Y'
while True:
    pwd = input('请输入工具码(输入exit退出):')
    if pwd=='exit':
        break
    if pwd!='1':
        print("密码错误,请重新输入!")
        continue
    #设置有效期
    if  not datetime.now().strftime('%Y-%m-%d')<='2020-11-25':
        print("工具有效期到达上限!")
        continue
    # 设置登录密码
    if pwd == '1':
        print('登录成功!\n')
        while True:
            file_ph=input('请输入需分词的文件路径:')
            file_ph_res=file_ph+'\\分词后'
            #解析路径下的所有xls,xlsx
            try:
                file_list = [i for i in os.walk(file_ph)]
                if len(file_list):
                    file_list=file_list[0][2]
                    wfile = file_ph_res + '\\分词.xls'
                    we = xlwt.Workbook()  # 创建一个Excel对象
                    sh = we.add_sheet('sheet1', cell_overwrite_ok=True)  # 某个单元格可以复写,多次写入不报错
                    #计数最大行
                    ran_sh_max=0
                    for i in file_list:
                        if  '.TXT' in i.upper():
                            rfile = file_ph+'\\'+i
                            #若目标路径不存在,创建
                            if not os.path.isdir(file_ph_res):
                                os.mkdir(file_ph_res)
                            txt=open(rfile, 'r',encoding='utf-8').read()
                            words = jieba.lcut(txt)  # 使用精确模式对文本进行分词
                            counts = {}  # 通过键值对的形式存储词语及其出现的次数
                            for word in words:
                                if len(word) == 1:  # 单个词语不计算在内
                                    continue
                                else:
                                    counts[word] = counts.get(word, 0) + 1  # 遍历所有词语,每出现一次其对应的值加 1
                            items = list(counts.items())

                            items.sort(key=lambda x: x[1], reverse=True)  # 根据词语出现的次数进行从大到小排序
                            for i in range(len(items)):
                                word, count = items[i]
                                sh.write(i + ran_sh_max, 0, word)  # 在第i行第1列写内容
                                sh.write(i + ran_sh_max, 1, count)  # 在第i行第1列写内容
                            ran_sh_max+=len(items)
                    we.save(wfile)
                else:
                    print('输入目录未检测到Txt文件!!')
                    exit_ = input("是否继续?(Y/N):")
                    if exit_.upper() == 'N':
                        break
                    continue
            except Exception as e:
                print(e)
            print("解析完成,分词成功!\n")
            exit_=input("是否继续?(Y/N):")
            if exit_.upper()=='N':
                break
    if exit_.upper()=='N':
        break
os.system('pause')
上一篇 下一篇

猜你喜欢

热点阅读