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')
网友评论