首页 新闻 会员 周边 捐助

python文本分析统计词频输出结果后重新使用WPS查找筛选功能发现词出现的次数与代码做出结果不一致?

0
悬赏园豆:200 [待解决问题]

按照代码输出了统计词频数的文本和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文件
努力的HH的主页 努力的HH | 初学一级 | 园豆:2
提问于:2017-10-07 16:18
< >
分享
所有回答(2)
0

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

 

悟行 | 园豆:12559 (专家六级) | 2017-10-09 09:31
0

你的word_lst是所有单元格的内容吗?打印看看呢

可以把item也打印看看,item[0]只是一项,后面会不会有被丢弃的单词?

如果item是全的,就把item里面所有的项拿出来给jieba分词,然后加入到word_lst里面

Masako | 园豆:1893 (小虾三级) | 2017-10-09 14:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册