随笔 - 384  文章 - 0  评论 - 35  阅读 - 142万

Python 读取dpf表格的内容

主要是读取一些api接口的文档数据。

下面介绍一下几种情况

1、表格的起始位置并非在每页的首行或者最后一行

 

 

 

 我们只需要红框中的数据

复制代码
import pdfplumber
import pandas as pd
import numpy as np

#%% 申请司南
# 创建仅有表头的 dataframe 数组
pdf_df = pd.DataFrame(columns=['字段', '类型', '描述'])
 
# 获取 pdf 文件对象
pdf_mt = pdfplumber.open("xxx.pdf")
 
# 因为我需要获取的资产负债表在 51-53页 但是索引从0开始 所以切片取 50-52即可

for i in range(2,7):
    print(i)
    if i==2:
        pdf_pg =[pdf_mt.pages[i].extract_tables()[-1][7:]]
    elif i==7:
        pdf_pg = [pdf_mt.pages[i].extract_tables()[0]]
    else:
        pdf_pg = pdf_mt.pages[i].extract_tables()  
    pdf_df = pdf_df.append(pd.DataFrame(np.array(pdf_pg[0]),columns=['字段', '类型', '描述']))
pdf_df.to_excel('xxxx.xlsx')   
复制代码

我的代码是在Spyder上面跑的,看着有些字段显示有点问题,但是导到Excel是没有问题的

 

 

2、表格中存在合并单元格的

 

 导入时数据变成这样

 

 

 下面这样处理

复制代码
pdf_df = pd.DataFrame(columns=['变量名', '输出值', '原始值区间范围(金额区间单位:元)'])
 
# 获取 pdf 文件对象
pdf_mt = pdfplumber.open("xxx.pdf")
 
# 因为我需要获取的资产负债表在 51-53页 但是索引从0开始 所以切片取 50-52即可
l=[]
for i in range(29,60):
    print(i)
    if i==29:
        pdf_pg =[pdf_mt.pages[i].extract_tables()[-1][1:]]
    else:
        pdf_pg = pdf_mt.pages[i].extract_tables() 
    for i in pdf_pg[0]:
        if i[0]!=None:
            l.append(i[0])
        elif i[0]==None:
            i[0] = l[-1]
    pdf_df = pdf_df.append(pd.DataFrame(np.array(pdf_pg[0]),columns=['变量名', '输出值', '原始值区间范围(金额区间单位:元)']))
pdf_df.to_excel('xxx.xlsx')
复制代码

 

 

 

 

就这样了。。。。。。。

posted on   小小喽啰  阅读(142)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2020-08-10 机器学习算法(一): 基于逻辑回归的分类预测
2020-08-10 numpy.diff()函数,后一个元素减前面的一个元素
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示