300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 使用Python对PDF文件进行词频统计分析并保存到CSV文件中

使用Python对PDF文件进行词频统计分析并保存到CSV文件中

时间:2022-01-03 08:29:45

相关推荐

使用Python对PDF文件进行词频统计分析并保存到CSV文件中

PDF转TXT文件要安装的库

pdfminer3k

分词处理要安装的库

jieba

# -*- coding:utf-8import sysimport importlibimportlib.reload(sys)from pdfminer.pdfparser import PDFParser,PDFDocumentfrom pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreterfrom pdfminer.converter import PDFPageAggregatorfrom pdfminer.layout import LTTextBoxHorizontal,LAParamsfrom pdfminer.pdfinterp import PDFTextExtractionNotAllowed'''解析pdf 文本,保存到txt文件中'''path = r'商丘师范.pdf'def parse():fp = open(path, 'rb') # 以二进制读模式打开#用文件对象来创建一个pdf文档分析器praser = PDFParser(fp)# 创建一个PDF文档doc = PDFDocument()# 连接分析器 与文档对象praser.set_document(doc)doc.set_parser(praser)# 提供初始化密码# 如果没有密码 就创建一个空的字符串doc.initialize()# 检测文档是否提供txt转换,不提供就忽略if not doc.is_extractable:raise PDFTextExtractionNotAllowedelse:# 创建PDf 资源管理器 来管理共享资源rsrcmgr = PDFResourceManager()# 创建一个PDF设备对象laparams = LAParams()device = PDFPageAggregator(rsrcmgr, laparams=laparams)# 创建一个PDF解释器对象interpreter = PDFPageInterpreter(rsrcmgr, device)# 循环遍历列表,每次处理一个page的内容for page in doc.get_pages(): # doc.get_pages() 获取page列表interpreter.process_page(page)# 接受该页面的LTPage对象layout = device.get_result()# 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等 想要获取文本就获得对象的text属性,for x in layout:if (isinstance(x, LTTextBoxHorizontal)):with open(r'商丘师范.txt', 'a', encoding='utf-8') as f:results = x.get_text()f.write(results + '\n')def solve():# e10.3CalThreeKingdoms.pyimport jiebaexcludes = {} # {"将军","却说","丞相"}txt = open("商丘师范.txt", "r", encoding='utf-8').read()words = jieba.lcut(txt)counts = {}for word in words:if len(word) == 1: # 排除单个字符的分词结果continueelse:counts[word] = counts.get(word, 0) + 1for word in excludes:del (counts[word])items = list(counts.items())items.sort(key=lambda x: x[1], reverse=True)for i in range(15):word, count = items[i]print("{:*<10}{:->5}".format(word, count))if __name__ == '__main__':parse()solve()

词频统计并且保存到CSV文件中

code:

# -*- coding:utf-8import sysimport importlibimportlib.reload(sys)from pdfminer.pdfparser import PDFParser,PDFDocumentfrom pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreterfrom pdfminer.converter import PDFPageAggregatorfrom pdfminer.layout import LTTextBoxHorizontal,LAParamsfrom pdfminer.pdfinterp import PDFTextExtractionNotAllowed'''解析pdf 文本,保存到txt文件中'''path = r'商丘师范.pdf'def parse():fp = open(path, 'rb') # 以二进制读模式打开#用文件对象来创建一个pdf文档分析器praser = PDFParser(fp)# 创建一个PDF文档doc = PDFDocument()# 连接分析器 与文档对象praser.set_document(doc)doc.set_parser(praser)# 提供初始化密码# 如果没有密码 就创建一个空的字符串doc.initialize()# 检测文档是否提供txt转换,不提供就忽略if not doc.is_extractable:raise PDFTextExtractionNotAllowedelse:# 创建PDf 资源管理器 来管理共享资源rsrcmgr = PDFResourceManager()# 创建一个PDF设备对象laparams = LAParams()device = PDFPageAggregator(rsrcmgr, laparams=laparams)# 创建一个PDF解释器对象interpreter = PDFPageInterpreter(rsrcmgr, device)# 循环遍历列表,每次处理一个page的内容for page in doc.get_pages(): # doc.get_pages() 获取page列表interpreter.process_page(page)# 接受该页面的LTPage对象layout = device.get_result()# 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象 一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等 想要获取文本就获得对象的text属性,for x in layout:if (isinstance(x, LTTextBoxHorizontal)):with open(r'商丘师范.txt', 'a', encoding='utf-8') as f:results = x.get_text()f.write(results + '\n')def solve():# e10.3CalThreeKingdoms.pyimport jiebaexcludes = {} # {"将军","却说","丞相"}txt = open("商丘师范.txt", "r", encoding='utf-8').read()words = jieba.lcut(txt)counts = {}for word in words:if len(word) == 1: # 排除单个字符的分词结果continueelse:counts[word] = counts.get(word, 0) + 1for word in excludes:del (counts[word])items = list(counts.items())items.sort(key=lambda x: x[1], reverse=True)fo = open("商丘师范.csv", "w")# print(items[:10])for item in items:# print(type(item))ls = list(item)# print(type(ls))ls[1] = str(ls[1])# print(ls)fo.write(",".join(ls) + "\n")fo.close()if __name__ == '__main__':parse()solve()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。