Python对pdf中的关键字过滤(pdfminer3k或pdfminer使用)
时间:2019-06-12
本文章向大家介绍Python对pdf中的关键字过滤(pdfminer3k或pdfminer使用),主要包括Python对pdf中的关键字过滤(pdfminer3k或pdfminer使用)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近在实习,老板一下子发给了我120份研报,然而很多都是没用的。聪明的大脑一定要想办法让电脑帮助自己完成简单的工作!
下面是Python筛选含有“”丙烯“”关键字的程序,由于文件的保密性只能贴出代码。
注意:
pip install pdfminer3k而不是pdfminer
导入的时候名字是pdfminer,原因我才是python版本的问题
# -*- coding: utf-8 -*- """ Created on Fri May 10 16:54:16 2019 @author: didi.lv """ import os from io import StringIO import shutil # 注意:一定要pip install pdfminer3k 而不是pdfminer from pdfminer.pdfinterp import PDFResourceManager, process_pdf from pdfminer.converter import TextConverter from pdfminer.layout import LAParams # 读取pdf的函数,返回内容 def readPdf(pdf_file): rsrcmgr = PDFResourceManager() retstr = StringIO() laparams = LAParams() device = TextConverter(rsrcmgr=rsrcmgr, outfp=retstr, laparams=laparams) process_pdf(rsrcmgr=rsrcmgr, device=device, fp=pdf_file) device.close() content = retstr.getvalue() retstr.close() return content def file_name(file_dir): names = [] for root, dirs, files in os.walk(file_dir): names.append(files) return files if __name__ == '__main__': file_dir = r'C:\\Users\didi.lv\Desktop\filenames' file_names_str = str(file_name(file_dir)) name_ = file_names_str.split('.pdf\', ') # 简单的check下这个代码的细节,需要理解 name_temp1 = name_[0] name_[0] = name_temp1[1:] name_temp2 = name_[-1] name_[-1] = name_temp2[0:-6] i = 0 for name_check in name_[48:]: print('--------------------------------------------------------') i += 1 print(i) name_check = name_check[1:] name_check += '.pdf' name_check_open = r'C:\\Users\didi.lv\Desktop\filenames' + '\\' + name_check pdf_file = open(name_check_open, 'rb') content = readPdf(pdf_file) if '丙烯' in content: # 注意这里是从原始位置filenames1复制到目标位置filenames2 file_origin = r'C:\\Users\didi.lv\Desktop\filenames1' + '\\' + name_check file_target = r'C:\\Users\didi.lv\Desktop\filenames2' + '\\' + name_check shutil.copyfile(file_origin,file_target) print('copy No. %d file' %i)
原文:https://blog.csdn.net/Eric2016_Lv/article/details/90082280
原文地址:https://www.cnblogs.com/qbdj/p/11010830.html
- Java全栈开发Spring学习第三天
- 一个oracle bug的简单验证(r8笔记第45天)
- 批量导出csv文件的基本尝试(r8笔记第44天)
- Golang 中的并发限制与超时控制
- 一条简单的报警信息发现的oracle bug(r8笔记第42天)
- 一条insert语句导致的性能问题分析(一)(r8笔记第40天)
- 一条insert语句导致的性能问题分析(二)(r8笔记第43天)
- dataguard中的密码文件管理(r8笔记第39天)
- Mybatis_day02
- Golang构建HTTP服务(一)--- net/http库源码笔记
- Golang构建HTTP服务(二)--- Handler,ServeMux与中间件
- 使用Let's Encrypt的SSL证书配置HTTPS手记
- Mybatis_day01
- golang 如何验证struct字段的数据格式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法