21天学习挑战赛——Python pdfplumber读取PDF写入Excel

目录

1. pdfplumber模块概述

2. pdfplumber模块操作PDF

2.1 加载PDF

2.2 pdfplumber.PDF类

2.3 pdfplumber.Page类

3. 实战操作

3.1 提取单个PDF全部页数

3.2 批量提取多个PDF文件 


就是不想让自己留遗憾,继续加油。🌈

活动地址:CSDN21天学习挑战赛

1. pdfplumber模块概述

        PDF(Portable Document Format)是一种便携文档格式,便于跨操作系统传播文档。PDF文档遵循标准格式,因此存在很多可以操作PDF文档的工具,Python也不例外。

        pdfplumber 属于Python 第三方库。专注于PDF的内容提取,例如可提取PDF中的文本(位置、字体及颜色等)和形状(矩形、直线、曲线),还有解析表格的功能。

2. pdfplumber模块操作PDF

首先需要下载示例PDF:PDF下载地址

PDF部分截图如下所示:

2.1 加载PDF

函数语法pdfplumber.open('路径/文件名.pdf', password='test', laparams={'line_overlap':0.7})

参数格式

  • password :要加载受密码保护的PDF,请传递 password 关键字参数
  • laparams :要将布局参数设置为 pdfminer.slx 的布局引擎,请传递 laparams 关键字参数

 用法举例:

import pdfplumber

with pdfplumber.open('pdf文件/1.pdf') as pdf:
    print(pdf) #输出:<pdfplumber.pdf.PDF object at 0x00000209D8AC57F0>
    print(type(pdf)) #输出:<class 'pdfplumber.pdf.PDF'>

2.2 pdfplumber.PDF类

        pdfplumber.PDF类 表示单个PDF,并具有两个主要属性。

属性说明
.metadata从PDF的info中获取元数据 键/值对 字典。通常包括“CreationDate”,“ModDate”,“Producer”等
.pages返回一个包含 pdfplumber.Page 实例的列表,每一个实例代表PDF每一页的信息

用法举例 :

import pdfplumber

with pdfplumber.open('pdf文件/1.pdf') as pdf:
    #读取PDF信息
    print(pdf.metadata) #输出:{'Author': 'wangwangyuqing', 'Comments': '', 'Company': '', 'CreationDate': "D:20220330113508+03'35'", 'Creator': 'WPS 文字', 'Keywords': '', 'ModDate': "D:20220330113508+03'35'", 'Producer': '', 'SourceModified': "D:20220330113508+03'35'", 'Subject': '', 'Title': '', 'Trapped': 'False'}
    #输出总页数
    print(len(pdf.pages)) #输出:2

2.3 pdfplumber.Page类

        pdfplumber.Page类 是 pdfplumber 整个的核心,大多数操作都围绕这个类进行操作,它具有以下几个属性:

pdfplumber.Page类 属性
属性说明
.page_number顺序页码,第一页为1,第二页为2,依此类推。
.width页面的宽度
.height页面的高度
.object/.chars/.lines/.rects/.curves/.figures/.images这些属性中的每一个都是一个列表,每个列表包含一个字典,用于嵌入页面上的每个此类对象。有关详细信息,请参阅下面的“对象”
pdfplumber.Page类 常用方法
方法名说明
.extract_text()用来提取页面中的文本,将页面的所有字符对象整理为字符串
.extract_words()

返回所有的单词及相关信息

.extract_tables()提取页面的表格
.to_image()用于可视化调试,返回 Pageimage类 的一个实例
.close()默认情况下,Page对象缓存其布局和对象信息,以避免重新处理它。但是,在解析大型PDF时,这些缓存的属性可能需要大佬内存。可以使用此方法刷新缓存并释放内存。

用法举例:

import pdfplumber
import xlwt

with pdfplumber.open('pdf文件/1.pdf') as pdf:
    #1.读取第一页的页码、页宽、页高
    first_page = pdf.pages[0] #pdfplumber.Page对象的第一页
    #查看页码
    print('页码:',first_page.page_number) #输出:页码: 1
    #查看页宽
    print('页宽:',first_page.width) #输出:页宽: 595.3
    #查看页高
    print('页高:',first_page.height) #输出:页高: 841.9

    #2.读取文本第一页
    text = first_page.extract_text()
    print(text)
    # 输出:店铺名 价格 销量 地址
    #      小罐茶旗舰店 449 474 安徽
    #      零趣食品旗舰店 6.9 60000 福建
    #      ...
    #      嘉禹沪晓旗舰店 598 1517 上海

    #3.读取表格第一页
    table_1 = first_page.extract_table() #读取表格数据
    #3.1创建Excel表对象
    workbook = xlwt.Workbook(encoding='utf8')
    #3.2新建Sheet表
    worksheet = workbook.add_sheet('Sheet1')
    #3.3自定义列名
    col1 = table_1[0]
    print(col1) #输出:['店铺名', '价格', '销量', '地址']
    #3.4将列属性元组col写进Sheet表单中第一行
    for i in range(len(col1)):
        worksheet.write(0,i,col1[i])
    #3.5将数据写入Sheet表单中
    for i in range(len(table_1[1:])):
        data = table_1[1:][i]
        for j in range(len(col1)):
            worksheet.write(i+1, j, data[j])
    #3.6保存文件
    workbook.save('1.xls')

最终生成了一个Excel文件,部分内容如下图所示:

3. 实战操作

3.1 提取单个PDF全部页数

import pdfplumber
import xlwt

with pdfplumber.open('pdf文件/1.pdf') as pdf:
    #1.把所有页的数据存在一个临时列表中
    item = []
    for page in pdf.pages:
        text = page.extract_table()
        for i in text:
            item.append(i)
    #2.创建Excel表对象
    workbook = xlwt.Workbook(encoding='utf8')
    #3.新建Sheet表
    worksheet = workbook.add_sheet('Sheet1')
    #4.自定义列名
    col1 = item[0]
    print(col1) #输出:['店铺名', '价格', '销量', '地址']
    #5.将列属性元组col写进Sheet表单中第一行
    for i in range(len(col1)):
        worksheet.write(0,i,col1[i])
    #6.将数据写入Sheet表单中
    for i in range(len(item[1:])):
        data = item[1:][i]
        for j in range(len(col1)):
            worksheet.write(i+1, j, data[j])
    #7.保存文件
    workbook.save('2.xls')

运行结果:

3.2 批量提取多个PDF文件 

        下载的文件夹中有多个PDF文件,所以进行批量提取,并保存到一个Excel文件中。注意:以下代码中的路径填写自己当前电脑的文件路径。

import pdfplumber
import xlwt
import os

#1.获取文件夹下所有的PDF文件路径
file_dir = r'D:\python程序\pdf文件'
file_list = []
for files in os.walk(file_dir):
    print(files) #输出:('D:\\python程序\\pdf文件', [], ['1.pdf', '1的副本.pdf', '1的副本10.pdf', '1的副本11.pdf', '1的副本2.pdf', '1的副本3.pdf', '1的副本4.pdf', '1的副本5.pdf', '1的副本6.pdf', '1的副本7.pdf', '1的副本8.pdf', '1的副本9.pdf'])
    for file in files[2]:
        #以“.”进行分割,如果后缀为PDF或pdf就拼接地址存入file_list
        if file.split('.')[1] == 'pdf' or file.split('.')[1]=='PDF':
            file_list.append(file_dir+'\\'+file)
#2.存入Excel
#2.1把所有PDF文件的所有页的数据存在一个临时列表中
item = []
for file_path in file_list:
    with pdfplumber.open(file_path) as pdf:
        for page in pdf.pages:
            text = page.extract_table()
            for i in text:
                item.append(i)
#2.2创建Excel表对象
workbook = xlwt.Workbook(encoding='utf8')
#2.3新建Sheet表
worksheet = workbook.add_sheet('Sheet1')
#2.4自定义列名
col1 = item[0]
print(col1) #输出:['店铺名', '价格', '销量', '地址']
#2.5将列属性元组col写进Sheet表单中第一行
for i in range(len(col1)):
    worksheet.write(0,i,col1[i])
#2.6将数据写入Sheet表单中
for i in range(len(item[1:])):
    data = item[1:][i]
    for j in range(len(col1)):
        worksheet.write(i+1, j, data[j])
#2.7保存文件
workbook.save('3.xls')

运行结果:

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: 使用 Python 读取 PDF写入 Excel,可以使用第三方库,例如: 1. PyPDF2:用于读取 PDF 文件内容 2. pandas:用于将 PDF 文件内容存储到 DataFrame 中,并写入 Excel 文件 3. openpyxl:用于读写 Excel 文件 代码示例: ``` import PyPDF2 import pandas as pd # 读取 PDF 文件内容 pdfFileObj = open('sample.pdf', 'rb') pdfReader = PyPDF2.PdfFileReader(pdfFileObj) text = '' for page in range(pdfReader.numPages): text += pdfReader.getPage(page).extractText() pdfFileObj.close() # 将 PDF 文件内容存储到 DataFrame 中 df = pd.DataFrame({'text': [text]}) # 写入 Excel 文件 df.to_excel('sample.xlsx', index=False) ``` ### 回答2: Python是一门非常强大的编程语言,它可以用于多种任务,其中包括读取PDF文件并将其写入Excel。如果你想实现这个功能,下面的步骤可以帮助你完成这个任务。 步骤一:安装必要的Python库 要读取PDF文件,你需要安装一个名为PyPDF2的Python库。这个库也可以用来编写PDF文件。安装这个库的命令是: `pip install PyPDF2` 另外,你还需要安装一个名为openpyxl的Python库,它可以用来编写Excel文件。安装这个库的命令是: `pip install openpyxl` 步骤二:使用Python读取PDF文件 使用Python读取PDF文件很容易。只需使用下面的代码: ``` import PyPDF2 pdf_file = open('example.pdf', 'rb') pdf_reader = PyPDF2.PdfFileReader(pdf_file) page = pdf_reader.getPage(0) text = page.extractText() print(text) pdf_file.close() ``` 这段代码使用了PyPDF2库打开了一个名为example.pdfPDF文件。然后,它使用PdfFileReader方法读取PDF文件中的页面。接下来,它提取了第一页的文本,并将其打印到屏幕上。 步骤三:使用Python编写Excel文件 使用Python编写Excel文件同样也很容易。只需使用下面的代码: ``` import openpyxl wb = openpyxl.Workbook() sheet = wb.active sheet['A1'] = 'Hello' sheet['B1'] = 'World' wb.save('example.xlsx') ``` 这段代码创建了一个名为example.xlsx的Excel文件,并在其中编写了“Hello”和“World”两个单元格。最后,这个代码将修改后的Excel文件保存到磁盘上。 步骤四:将PDF文本写入Excel文件中 要将PDF文件中的文本写入Excel文件中,你需要将步骤二和步骤三中的代码组合在一起。下面是一个实现示例: ``` import PyPDF2 import openpyxl pdf_file = open('example.pdf', 'rb') pdf_reader = PyPDF2.PdfFileReader(pdf_file) text = '' for page in range(pdf_reader.getNumPages()): current_page = pdf_reader.getPage(page) text += current_page.extractText() pdf_file.close() wb = openpyxl.Workbook() sheet = wb.active sheet['A1'] = text wb.save('example.xlsx') ``` 这个代码打开PDF文件,将所有页面的文本提取到一个字符串中,并将文本写入Excel文件中。最后,它将Excel文件保存到磁盘上。 总结 Python是一门强大的编程语言,用于读取PDF文件并将其写入Excel文件非常容易。你只需要使用PyPDF2库读取PDF文件的内容,并使用openpyxl库编写Excel文件即可。这个过程很简单,但可以为你的工作带来很大的便利。 ### 回答3: Python是一种易于学习的编程语言,经常用于数据分析和自动化处理。如果需要将PDF文件的内容提取并写入Excel表格中,Python可以轻松实现这个任务。接下来,我将介绍如何使用Python读取PDF文件并将其写入Excel。 1. 安装必要的Python库 在开始之前,我们需要安装一些必要的Python库来处理PDFExcel文件,可以使用以下命令: pip install PyPDF2 pip install openpyxl 其中,PyPDF2库用于处理PDF文件,而openpyxl用于处理Excel文件。 2. 读取PDF文件 要读取PDF文件,我们可以使用PyPDF2库。以下代码展示如何打开一个PDF文件并提取所有页的文本内容: ``` import PyPDF2 pdf_file = open('example.pdf', 'rb') pdf_reader = PyPDF2.PdfFileReader(pdf_file) page_count = pdf_reader.numPages all_text = '' for i in range(page_count): page = pdf_reader.getPage(i) text = page.extractText() all_text += text pdf_file.close() print(all_text) ``` 上述代码打开一个名为“example.pdf”的PDF文件,并提取所有页中的文本内容,将其放入名为“all_text”的字符串变量中。注意,在使用完毕后需要关闭文件句柄。 3. 写入Excel文件 要将PDF文件的内容写入Excel表格中,我们可以使用openpyxl库。以下代码展示如何创建一个Excel工作簿、工作表、以及写入数据至单元格: ``` import openpyxl wb = openpyxl.Workbook() ws = wb.active ws['A1'] = 'PDF内容' ws['B1'] = '其他列' row = 2 for line in all_text.split('\n'): ws.cell(row=row, column=1, value=line) row += 1 wb.save('example.xlsx') ``` 该代码使用openpyxl创建一个Excel工作簿,然后向其中添加一个名为“PDF内容”的列和另外一些列。接着,通过分割刚才提取的PDF内容字符串中的换行符,将每行文本一个一个写入Excel表格中的第一列。最终请注意保存Excel工作簿。 以上就是使用Python读取PDF文件并将其写入Excel表格的方法,这一过程需要安装必要的库,并且需要一些编程知识和技巧。但一旦你熟练掌握了这些技能,读取文件和处理数据的任务将变得轻松而愉快。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花落指尖❀

您的认可是小浪宝宝最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值