活动地址:CSDN21天学习挑战赛
目录
功能——
·访问有关每个PDF对象的详细信息
·用于提取文本和表格的更高级别,可自定义的方法
·紧密集成的可视化调试
·其它实用功能
pip install pdfplumber
导入
import pdfplumber
pdf表格测试集pdf文件(Python读取PDF表格测试集).zip
格式:
pdfplumber.open("路径/文件名.pdf",password="",laparams={"line_overlap":=0.7})
·password:加载受保护密码保护的PDF,传递password关键字参数
·laparams:要将布局分析参数设置为pdfminer.six的布局引擎,需传递laparams关键字参数
例——
- import pdfplumber
-
- with pdfplumber.open("./pdf-files/1.pdf") as pdf:
- print(pdf)
- print(type(pdf))
输出——
该类表示单个PDF,具有两个主要属性——
- import pdfplumber
- with pdfplumber.open("./pdf-files/1.pdf") as 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'}
- import pdfplumber
- with pdfplumber.open("./pdf-files/1.pdf") as pdf:
- print(len(pdf.pages))
-
输出——
pdfplumber.Page类是pdfplumber整个的核心——
- import pdfplumber
- with pdfplumber.open("./pdf-files/1.pdf") as pdf:
- first_page = pdf.pages[0] # pdfplumber.Page对象的第一页
- # 查看页码
- print('页码:', first_page.page_number)
- # 查看页宽
- print('页宽:', first_page.width)
- # 查看页高
- print('页高:', first_page.height)
-
输出——
- 页码: 1
- 页宽: 595.3
- 页高: 841.9
- import pdfplumber
- with pdfplumber.open("./pdf-files/1.pdf") as pdf:
- first_page = pdf.pages[1] # pdfplumber.Page对象的第一页
- text = first_page.extract_text()
- print(text)
输出——
- 盛隆食品专营店 165 30000 浙江
- 保银旗舰店 228 1444 河南
- 塞上滩旗舰店 868 903 宁夏
- 陆卢缘旗舰店 88 8000 福建
- 小仙炖旗舰店 2796 2771 河北
- 良品铺子旗舰店 98 600000 湖北
- 一哥鲍鱼食品专
- 1999 286 广东
- 营店
- 舍得官方旗舰店 1188 3975 四川
- 珍百年旗舰店 128 1931 湖南
- 丽皇香旗舰店 128 7000 福建
- 轩农谷生鲜专营
- 488 1921 浙江
- 店
- import pdfplumber
- import xlwt
-
- with pdfplumber.open("./pdf-files/1.pdf") as pdf:
- page_one = pdf.pages[0] # PDF第一页
- table_1 = page_one.extract_table() # 读取表格数据
- # 1. 创建Excel表对象
- workbook = xlwt.Workbook(encoding='utf8')
- # 2. 新建sheet表
- worksheet = workbook.add_sheet('Sheet1')
- # 3. 自定义列名
- col1 = table_1[0]
- # print(col1)# ['店铺名', '价格', '销量', '地址']
- # 4. 将列属性元组col写进sheet表单中第一行
- for i in range(0, len(col1)):
- worksheet.write(0, i, col1[i])
- # 5. 将数据写进sheet表单中
- for i in range(0, len(table_1[1:])):
- data = table_1[1:][i]
- for j in range(0, len(col1)):
- worksheet.write(i + 1, j, data[j])
- # 6. 保存文件分两种格式
输出——
- import pdfplumber
- import xlwt
-
- with pdfplumber.open("./pdf-files/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(0, len(col1)):
- worksheet.write(0, i, col1[i])
- # 6. 将数据写进sheet表单中
- for i in range(0, len(item[1:])):
- data = item[1:][i]
- for j in range(0, len(col1)):
- worksheet.write(i + 1, j, data[j])
- # 7. 保存文件分两种格式
- workbook.save('test.xls')
- import pdfplumber
- import xlwt
- import os
-
- # 一、获取文件下所有pdf文件路径
- file_dir = r'pdf-files'
- file_list = []
- for files in os.walk(file_dir):
- # print(files)
- # ('E:\\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)
-
- # 二、存入Excel
- # 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. 创建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(0, len(col1)):
- worksheet.write(0, i, col1[i])
- # 6. 将数据写进sheet表单中
- for i in range(0, len(item[1:])):
- data = item[1:][i]
- for j in range(0, len(col1)):
- worksheet.write(i + 1, j, data[j])
- # 7. 保存文件分两种格式
- workbook.save('test.xls')