按照代码输出了统计词频数的文本和excel表格,但是我重新打开文本用word里的查找筛选功能后发现词出现的次数与代码输出的结果不一致,如“照明”一词代码输出668次,而word查找是1400+次,请问代码哪里有问题呢??应该如何更改呢??万分感谢!! 我代码中统计的文本是12.txt,输出的结果为12345.txt和12345.xls
#!/usr/bin/env Python # coding=utf-8 import sys import importlib importlib.reload(sys) ('utf-8') import jieba import jieba.analyse import xlwt # 写入Excel表的库 if __name__ == "__main__": wbk = xlwt.Workbook(encoding='ascii') sheet = wbk.add_sheet("wordCount") # Excel单元格名字 word_lst = [] key_list = [] for line in open('C:\\Users\\sqrh_2\\Desktop\\12.txt',encoding='utf-8'): # 1.txt是需要分词统计的文档 item = line.strip('\n\r').split('\t') # 制表格切分 tags = jieba.analyse.extract_tags(item[0]) # jieba分词 for t in tags: word_lst.append(t) word_dict = {} with open("C:\\Users\\sqrh_2\\Desktop\\12345.txt", 'w') as wf2: # 打开文件 for item in word_lst: if item not in word_dict: # 统计数量 word_dict[item] = 1 else: word_dict[item] += 1 orderList = list(word_dict.values()) orderList.sort(reverse=True) # print orderList for i in range(len(orderList)): for key in word_dict: if word_dict[key] == orderList[i]: wf2.write(key + ' ' + str(word_dict[key]) + '\n') # 写入txt文档 key_list.append(key) word_dict[key] = 0 for i in range(len(key_list)): sheet.write(i, 1, label=orderList[i]) sheet.write(i, 0, label=key_list[i]) wbk.save('C:\\Users\\sqrh_2\\Desktop\\1234567.xls') # 保存为 wordCount.xls文件
item = line.strip('\n\r').split('\t') # 制表格切分
这有可能把那个词刚好切割了;
建议一次把字符串读出来再统计;
第一种方法:
import re s="照明对对对照明啧啧啧" count=len(re.findall(r'(?=照明)', s)) print(count)
第二种方法:
import string s="照明对对对照明啧啧啧" print(s.count('照明'))
第三种方法:
from collections import Counter c = Counter() for ch in 'programming': c[ch] = c[ch] + 1
你的word_lst是所有单元格的内容吗?打印看看呢
可以把item也打印看看,item[0]只是一项,后面会不会有被丢弃的单词?
如果item是全的,就把item里面所有的项拿出来给jieba分词,然后加入到word_lst里面