首先,在cmd中输入命令行pip install python-docx
,下载安装模块python-docx
:
输入命令行pip install pdfminer3k
安装模块:
首先我们来看看文件目录:
文件目录
然后开始写读取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()
网友评论