利用Python提取PDF数据并筛选出想要的信息

文章介绍了如何使用Python的pdfplumber库从PDF文件中提取文本,通过处理和筛选,快速找到特定学校(如山东大学)的获奖名单,并将结果保存到TXT文件中。提供的代码示例展示了数据提取和筛选的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 全国大学生数学竞赛山东赛区的成绩终于出来了,所给的数据是PDF形式(如图),数据获取方式在文末

 本文介绍如何快速筛选出同校同学的获奖名单(所有这类形式的数据通用)

主要思路为:

step1 提取PDF中的文本,并以换行符为分隔拆分成列表类型

step2 为方便查看数据 ,给数据加上类型标签

step3 筛选

以下是代码实现:

import os
import pdfplumber

# pdf文件地址
PDF_path = "D:\A-pycharmproject1\数学竞赛\PDF"
#获取此文件夹下的文件名称
file_list = os.listdir(PDF_path)
#定义一个空列表存储数据
total_data = []

for name in file_list:
    data = []
    with pdfplumber.open(PDF_path+"\\"+name) as pdf:
        pages_data = [page.extract_text() for page in pdf.pages]#读取PDF每页的文本,共多少页,pages_data就有几个元素
    #将pages_data内的元素按“\n”拆分放入data列表
    for item in pages_data:
        data += item.split("\n")
    #由于这三个PDF是不同类别的,所以在数据前面加上标识
    data = [name[19:-8]+item for item in data]#需要实事求是,以实际情况出发
    # 合并到total_data列表中
    total_data += data
#查询字段str
str = "山东大学"
#target
target = [item for item in total_data if str in item]
with open(str+".txt", mode='a', encoding='utf-8') as f:
    for item in target:
        f.write(item+"\n")
        # f.write("\n")
f.close()

封装成函数

import os
import pdfplumber

# pdf文件地址
PDF_path = "D:\A-pycharmproject1\数学竞赛\PDF"
#查询字段str
str = "山东大学"
def search(PDF_path,str):
    #获取此文件夹下的文件名称
    file_list = os.listdir(PDF_path)
    #定义一个空列表存储数据
    total_data = []
    for name in file_list:
        data = []
        with pdfplumber.open(PDF_path+"\\"+name) as pdf:
            pages_data = [page.extract_text() for page in pdf.pages]#读取PDF每页的文本,共多少页,pages_data就有几个元素
        #将pages_data内的元素按“\n”拆分放入data列表
        for item in pages_data:
            data += item.split("\n")
        #由于这三个PDF是不同类别的,所以在数据前面加上标识
        data = [name[19:-8]+item for item in data]
        # 合并到total_data列表中
        total_data += data
        print(f"{name}处理完毕")
    #target
    target = [item for item in total_data if str in item]
    print("检索完毕")
    with open(str+".txt", mode='a', encoding='utf-8') as f:
        for item in target:
            f.write(item+"\n")
            # f.write("\n")
    f.close()
    print("导出成功")


search(PDF_path,str)

文件结构如下

 数据

数学竞赛获奖名单 https://www.aliyundrive.com/s/zXgUdQCzaTZ 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

最后,这个方法不是唯一方法也不是最优方法,用时12s左右

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值