天天看点

Python批量检测文本中出现最多的词运行完代码之后有没有达到你想要的效果呢?

是不是想用一种简单的方法检测多个文本中,每个文本出现最多的词?是不是感觉好像不是很难,但真的去敲的时候又无从下手?别慌别慌,你可能还不了解Python有一个扩展包,名字叫jieba,对就是结巴,结巴,恩jieba,ORZ,ORZ,ORZ,也不知道是哪个大佬开发的,反正就是好用得很,jieba有很强大的功能,它是一个分词工具,对词的操作很全

你电脑上应该装Python了吧?建议你装Python3以上的,毕竟有人一直在维护新的,首先按win+R,再敲个cmd进入命令行操作,输入pip install jieba,你的电脑就自动下载好了这个扩展包,记住哈,pip install 可以下载大部分玩Python时你想要的扩展包,记好了。

扩展包下载好之后,你就可以在你的sublime或者其他的开发工具上运行下面的代码了

# -*- coding: utf-8 -*-
import os, codecs
import jieba
from collections import Counter


def get_words(txt):                 #获取关键词函数
    seg_list = jieba.cut(txt)
    c = Counter()
    for x in seg_list:
        if len(x) > 1 and x != '\r\n':
            c[x] += 1
    print('常用词频度统计结果')
    for (k,v) in c.most_common(100):
    file = open(r'C:\Users\ASUS\Desktop\3.txt', 'a')    #打开一个文件
    file.write(str(c.most_common(8)))
    file.write('\n')
    # for (k,v) in c.most_common(5):   必要的话,你可以把这个多行注释给去掉
    #     print('%s%s %s  %d' % ('  '*(5-len(k)), k, '*'*int(v/3), v))
    #     file.write(' %s %d' % (k, v))
    #     print(' %s %d' % (k, v),end='')


if __name__ == '__main__':
    for info in os.listdir(r'C:\Users\ASUS\Desktop\《儿女英雄传》对比'):       #有没有感觉Python很强?直接循环一个文件夹
        domain = os.path.abspath(r'C:\Users\ASUS\Desktop\《儿女英雄传》对比')  # 获取文件夹的路径,此处其实没必要这么写,目的是为了熟悉os的文件夹操作
        info = os.path.join(domain, info)                                      # 将路径与文件名结合起来就是每个文件的完整路径,假设info是txt文件,那么执行完这一步之后info变成了C:\Users\ASUS\Desktop\《儿女英雄传》对比\XXX.txt
        info = open(info, 'r')                                                 # 读取文件内容
        txt = info.read()                                                      # read获取文件全部信息;
        get_words(txt)
        info.close()                                                            #关闭文件
           

运行完代码之后有没有达到你想要的效果呢?