python如何打开txt文件、并算词频_python读取word文本进行词频统计

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

146bd20c2e67?from=groupmessage

安装成功的样子

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

146bd20c2e67?from=groupmessage

安装pdfminer

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

146bd20c2e67?from=groupmessage

文件目录

然后开始写读取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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值