美文网首页
python读取word文本进行词频统计

python读取word文本进行词频统计

作者: 走错说爱你 | 来源:发表于2019-04-08 19:26 被阅读0次

    首先,在cmd中输入命令行pip install python-docx,下载安装模块python-docx

    安装成功的样子

    输入命令行pip install pdfminer3k安装模块:

    安装pdfminer

    首先我们来看看文件目录:


    文件目录

    然后开始写读取txt文本的代码:

    def readTxt():
        # 读取txt
        ftxt = open('《盗墓笔记少年篇沙海》.txt') # open里的为文件路径
        x = ftxt.read() # x即为读取的文件内容
        ftxt.close() # 关闭文档流
        return x # 返回读取到的文件内容
    

    接下来是读取word文本的代码:

    def readWord():
        # 读取word
        import docx # 引入python-docx模块,是的你没有看错,名字不一样
        fword = docx.Document('盗墓笔记.docx') # 括号内的为文件路径
        str1 = ''
        for para in fword.paragraphs: # 读取word的每一段内容
            str1 += para.text #para.text即为该段落的内容
        return str1 # 返回读取到的文件内容
    

    然后是读取pdf的代码:

    def readPdf():
        # 读取pdf
        from pdfminer.pdfparser import PDFParser, PDFDocument
        from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
        from pdfminer.converter import PDFPageAggregator
        from pdfminer.layout import LTTextBoxHorizontal, LAParams
        from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
    
        text_path = r'盗墓笔记.pdf'
        fpdf = open(text_path, 'rb')
        parser = PDFParser(fpdf) # 用文件对象创建一个PDF文档分析器
        doc = PDFDocument() # 创建一个PDF文档
        parser.set_document(doc) # 连接分析器与文档对象
        doc.set_parser(parser)
    
        doc.initialize()
        strs = ''
        if not doc.is_extractable:
            # 检测文档是否提供txt转换,不提供就忽略
            raise PDFTextExtractionNotAllowed
        else:
            pdfMgr = PDFResourceManager() # 创建PDF,资源管理器,来共享资源
            laparams = LAParams() # 创建一个PDF设备对象
            device = PDFPageAggregator(pdfMgr, laparams = laparams)
            interpreter = PDFPageInterpreter(pdfMgr, device) # 创建一个PDF解释其对象
    
            for page in doc.get_pages():
                interpreter.process_page(page) # doc.get_pages() 获取page列表
                layout = device.get_result() # 接受该页面的LTPage对象
                # 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象
                # 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等
                # 想要获取文本就获得对象的text属性,
                for x in layout:
                    if (isinstance(x, LTTextBoxHorizontal)):
                        strs += x.get_text()
        return strs # 返回读取到的文件内容
    

    然后使用jieba模块分词(该模块使用命令pip install jieba安装):

    import jieba
    wordList = jieba.lcut(readTxt())
    

    词频统计的代码:

    def fluAlz(wordList):
        # 词频统计
        wordSet = list(set(wordList))
        fluence = []
        for x in range(len(wordSet)):
            fluence.append([wordSet[x], wordList.count(wordSet[x])])
        fluence = sorted(fluence, key = lambda flu:flu[1], reverse = True)
        return fluence
    

    最后将结果写入txt文件内:

    fluence = fluAlz(wordList)
    # 将结果写入txt
    fwrite = open('test.txt', 'w')
    fwrite.write(str(fluence))
    fwrite.close()
    

    相关文章

      网友评论

          本文标题:python读取word文本进行词频统计

          本文链接:https://www.haomeiwen.com/subject/wuzsiqtx.html