一、需求

假设我目前有很多PDF文件,我需要找到含有某些关键词的PDF,并把哪些PDF含有关键字导出。(这些PDF里有的PDF含有我需要的关键词,有些PDF不含有)虽然 ctrl+F 可以完成搜索功能,但当pdf非常多的时候,手动搜索会很麻烦。本文提供的代码可以解决该问题。

二、代码

# CSDN 混沌的矩阵 2022.9.7
# 参考了网上的部分代码
import pdfplumber
import PyPDF2
import re
import os
import csv
import json# 定义函数,得到pdf页数
def get_pages(filename):with open(filename, 'rb' ) as fb:pages = PyPDF2.PdfFileReader(fb).getNumPages()return pages# 利用正则表达式查找关键词,并提取
def get_text(filename, pages, strobj):flag = Falsefind = []ele_len = 0with pdfplumber.open(filename) as pdf:for i in range(0, pages):print('正在搜索'+filename+'的第'+str(i)+'页')find.append(re.findall(strobj, pdf.pages[i].extract_text()))ele_len += len(find[i])print(filename + '搜索完毕')if ele_len != 0:flag = Truereturn flag# 保存表格
def save(pdf_name, judge):# 可以在这里更改保存csv的路径with open('C:\\csv\\report.csv', 'a', newline="", encoding='utf-8') as f_csv:writer = csv.writer(f_csv)writer.writerow([pdf_name, judge])print([pdf_name, judge])# 运行代码
if __name__ == '__main__':# 可以在这里更改保存pdf的路径path = 'C:\\pdf'file_list = os.listdir(path)file_list_copy = file_list[::]objstr = []while True:objstr_input = input('请输入您所需要查找的关键字:')objstr.append(objstr_input)choice = input('请问您还要继续输入关键词吗?输入y继续输入关键字,输入其他结束')if choice == 'Y' or choice == 'y':continueelse:breakfor keyword in objstr:print('正在搜索关键词:'+keyword)for file in file_list_copy:path_filename = path + '\\'+filepages_num = get_pages(path_filename)if  get_text(path_filename, pages_num, keyword):try:save(file, keyword)except Exception as e:print(e)with open('rest.txt', 'a', encoding='utf-8') as f:f.write(json.dumps(file_list, ensure_ascii=False))
'''
说明
1、文件寻找路径可以更改,如果使用默认路径,请阅读下文2和3
2、请将目标pdf文件放入c:\pdf文件夹,如果您的电脑上没有该文件夹,请自建,然后将所有pdf放入。
3、生成结果见c:\csv文件夹,如果您的电脑上没有该文件夹,请先建立该文件夹。
4、Python开发版本是3.9
5、csv出现乱码的处理方法
这是正常现象,因为默认excel打开的时候是不带BOM的,解决方法:
(step1)用记事本打开csv文件
(step2)另存为,存的时候名字不用改,然后把编码格式改为带BOM的UTF-8
(step3)重新打开csv文件即可看到正常
'''

三、测试

3.1 测试用PDF

  1. 2018下半年软考初级程序员下午真题.pdf(试题非原试卷,资源来自“希赛网”,以下简称《软考》)
  2. 计算机专用英语词汇1500词.pdf(以下简称《词汇》)
  3. 数据结构电子版pdf(严蔚敏版).pdf(以下简称《数据结构》)

3.2 测试关键词

关键词 《软考》是否含有 《词汇》是否含有 《数据结构》是否含有
程序 含有 含有 含有
答题纸 含有 不含有 不含有
选择 不含有 含有 含有
数据元素是数据的基本单位 不含有 不含有 含有

3.3 测试结果

首先输入关键词:

运行中:

运行结果:

可以看到,这张表格展示了哪些文件中含有指定的关键词。其中, “程序”关键词在三个测试文件中都存在, “答题纸”关键词仅在《软考》pdf中存在, “选择” 关键词在《数据结构》和《词汇》中存在, “数据元素是数据的基本单位” 仅在《数据结构》pdf中存在,与真实情况一致。

【Python】找到含有指定关键词的PDF相关推荐

  1. python提取excel指定关键词的行数据

    系列文章目录 文章目录 系列文章目录 前言 一.需求描述 1.图片展示 2.提取方法 二.python提取第二版 1.图片展示 1.提取方法 总结 前言 一.需求描述 1.图片展示 从如图所示的数据中 ...

  2. 知乎zhihu:Python爬取某个问题下所有含有给定关键词的回答

    原文地址及源码下载: xiaoxu​​​​​​​ 在浏览知乎问题过程中,为了通过关键字快速定位到自己想要的回答,写了这个爬虫程序.可以根据问题ID和关键词组合,保存所有含有关键词的回答. 其中,必须含 ...

  3. Python 利用 cookie 模拟登录,爬取指定关键词的淘宝商品信息

    Python 利用 cookie 模拟登录,爬取指定关键词的淘宝商品信息-Selenium 1. 本文目标 由于淘宝网站的不断更新,以前的爬取方法都无法重现,必须需要登录淘宝网站才可以进行搜索商品.所 ...

  4. python实现文件搜索_python实现搜索指定目录下文件及文件内搜索指定关键词的方法...

    本文实例讲述了python实现搜索指定目录下文件及文件内搜索指定关键词的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/python -O # -*- coding: UTF-8 ...

  5. Python查找文件夹中含有指定关键字的文件

    查找文件夹中含有指定关键字的文件,并将该文件复制到另一个文件夹中 ''' 查找文件夹中含有指定关键字的文件,并将该文件复制到另一个文件夹中 ''' import os import shutildef ...

  6. python处理PDF-通过关键词定位-截取PDF中的图表

    代码来源:python处理PDF-通过关键词定位-截取PDF中的图表 最近需要对pdf做一些处理,在这篇文章的基础上进行了修改. 运行时出现一些报错: AttributeError: 'Matrix' ...

  7. 如何用Python批量提取PPT中含有某关键词的一页,并将这些PPT合并

    前提:我有一堆PPT文件:1.pptx.2.pptx.3.pptx......每个文件中都含有若干张幻灯片,这若干张幻灯片中都有一张含有某个关键词的一页,例如含有"月分析",(我就 ...

  8. (九)python网络爬虫(理论+实战)——爬虫实战:指定关键词的百度新闻爬取

    目录 4.5 动手写网络爬虫--指定关键词的百度新闻爬取(实战) 序言 本人从事爬虫相关工作已8年以上,从一个小白到能够熟练使用爬虫,中间也走了些弯路,希望以自身的学习经历,让大家能够轻而易举的,快速 ...

  9. python批量pdf转word,python批量实现Word文件转换为PDF文件

    本文为大家分享了python批量转换Word文件为PDF文件的具体方法,供大家参考,具体内容如下 1.目的 通过万能的Python把一个目录下的所有Word文件转换为PDF文件. 2.遍历目录 作者总 ...

最新文章

  1. Nginx 性能调优实战
  2. 微生物组数据揭示中国稻谷产毒真菌分布及仓储动态变化
  3. [bat批处理文件] 压缩备份
  4. poj 1011 Sticks 搜索
  5. Tornado 使用手册(一)---------- 简单的tornado配置
  6. 洛谷-P1160 队列安排
  7. 探索比特币源码7-哈希
  8. [设计原则] 为模块设计初始化和终止化函数
  9. GARFIELD@12-06-2004
  10. stm32开发板调试问题记录----去除flash读保护以及debug进不去main.c的问题
  11. 中柏平板bios对照表_BIOS详解及中英文对照表
  12. python实现微信机器人 + 淘宝客自动领券(二)
  13. 《IT项目管理》(郭宁编著) 课后习题答案
  14. 关于机器翻译,看这一篇就够了
  15. 告别平淡(平庸)从做难事儿开始
  16. vimdiff及vim split
  17. vim删除奇数行_如何用vim删除特定的偶数行?
  18. 看了多篇2019年的面经后的个人总结
  19. Python——循环
  20. 金融界|IDC发布全球金融科技排行,神州信息位居中国上榜企业第一

热门文章

  1. Linux下将普通文本转为可执行文件
  2. 步进电机各品牌竞争力分析
  3. (详细)爬虫可视化温州11年天气大作业
  4. ubuntu使用Xubuntu,XFCE,更轻量级的桌面环境
  5. android何如获取SIM卡提供国家代码(ISO)
  6. 2021研究生入学考试总结以及一月计划
  7. 获取《使命召唤》模型及动画
  8. 【与丁中文老师的交流】
  9. word快速制作多个单面桌签、号码牌等
  10. 每天一个js小demo --全选与反选