利用Python怎么将pdf表格导入到excel

  介绍

这篇文章给大家介绍利用Python怎么将pdf表格导入到excel,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。


pdf文件的表格的数据可以复制,但是这是一项非常繁琐的事情,所以我首先考虑的是,Python可否帮助我们高效且规范地读pdf中取的表格数据,所以一顿的检索,发现了一个比较优质处理pdf的库:pdfplumber,当然这个库需要大家pip安装pdfplumber去进行安装。

<李>

导入pdfplumber库

<李>

通过pdfplumber.open()函数获取mt2018。pdf文件对象

<李>

通过该对象。页面获取pdf每页的对象,截取我们需要的页对象即可

<李>

通过页对象.extract_tables()获取表格数据(若需要获取文本:页对象.extract_text ())

代码实现:

import  pdfplumber         #,获取,pdf 文件对象   时间=pdf_mt  pdfplumber.open (“mt2018.pdf")      #,因为我需要获取的资产负债表在,页51号~ 53号,但是索引从0开始,所以切片取,百分比较即可   for  pdf_pg 拷贝pdf_mt.pages [50:53]:   ,,   #才能,只提取当前页表格数据,   打印才能(pdf_pg.extract_tables ())   ,,   ,,   --------------------------------------------------------------------------   结果比较多,截取一部分:   [[[& # 39;项目& # 39;,,& # 39;附注& # 39;,,& # 39;期末余额& # 39;,,& # 39;期初余额& # 39;],,(& # 39;流动资产:& # 39;,,& # 39;& # 39;,,& # 39;& # 39;,,& # 39;& # 39;],,(& # 39;货币资金& # 39;,,& # 39;1 & # 39;,,& # 39;112074791420 .06点# 39;,,& # 39;87868869913 .34 # 39;],,(& # 39;结算备付金& # 39;,,& # 39;& # 39;,,& # 39;& # 39;,,& # 39;& # 39;],,(& # 39;拆出资金& # 39;,,& # 39;& # 39;,,& # 39;& # 39;,,& # 39;& # 39;],,(& # 39;以公允价值计量且其变动计入当\ n期损益的金融资产& # 39;,,& # 39;& # 39;,,& # 39;& # 39;,,& # 39;& # 39;],,(& # 39;衍生金融资产& # 39;,,& # 39;& # 39;,,& # 39;& # 39;,,& # 39;& # 39;],,(& # 39;应收票据及应收账款& # 39;,,& # 39;2 & # 39;,,& # 39;563739710点〇# 39;,,& # 39;1221706039点〇# 39;]]]

将完整表保存到csv文件中

我们发现,返回的数据集是一个三维的列表。那么在我们平时处理的excel表格数据(行与列)都是二维的数据,那么,这多出的一维是什么呢?其实就是我们的夜(页)~再来一个循环取出二维数据进行保存即可

for  pdf_pg 拷贝pdf_mt.pages [50:53]:   for 才能;pdf_tb 拷贝pdf_pg.extract_tables ():   ,,,印刷(pdf_tb)   ,,,,   ------------------------------------------------------------------------------   结果比较多,截取一部分:   [[& # 39;项目& # 39;,,& # 39;附注& # 39;,,& # 39;期末余额& # 39;,,& # 39;期初余额& # 39;],,(& # 39;流动资产:& # 39;,,& # 39;& # 39;,,& # 39;& # 39;,,& # 39;& # 39;],,(& # 39;货币资金& # 39;,,& # 39;1 & # 39;,,& # 39;112074791420 .06点# 39;,,& # 39;87868869913 .34 # 39;],,(& # 39;结算备付金& # 39;,,& # 39;& # 39;,,& # 39;& # 39;,,& # 39;& # 39;],,(& # 39;拆出资金& # 39;,,& # 39;& # 39;,,& # 39;& # 39;,,& # 39;& # 39;],,(& # 39;以公允价值计量且其变动计入当\ n期损益的金融资产& # 39;,,& # 39;& # 39;,,& # 39;& # 39;,,& # 39;& # 39;],,(& # 39;衍生金融资产& # 39;,,& # 39;& # 39;,,& # 39;& # 39;,,& # 39;& # 39;],,(& # 39;应收票据及应收账款& # 39;,,& # 39;2 & # 39;,,& # 39;563739710点〇# 39;,,& # 39;1221706039点〇# 39;]]

但是,真的那么简单吗?这时,我们就需要细品我们的pdf了,如下图

利用Python怎么将pdf表格导入到excel“> </p> <p>我们发现,一张完整的资产负债表分布在多页上。也就是说,每一页的里面的表格数据都是一个三维的列表,所以我们保存数据的时候,需要让其有共同的表头(列索引),并且进行拼接。</p> <p>那必须就要强推我们的熊猫了,pandas.DataFrame()非常完美的创建表格式的二维数组,以及指定列索引(表头)。包括可以直接使用df.append()进行共同表头数据的堆叠拼接。</p> <pre类= import  pdfplumber   import  pandas  as  pd   import  numpy  as  np      #,创建仅有表头的,dataframe 数组   pdf_df =, pd.DataFrame(列=[& # 39;项目& # 39;,,& # 39;附注& # 39;,,& # 39;期末余额& # 39;,,& # 39;期初余额& # 39;])      #,获取,pdf 文件对象   时间=pdf_mt  pdfplumber.open (“mt2018.pdf")      #,因为我需要获取的资产负债表在,页51号~ 53号,但是索引从0开始,所以切片取,百分比较即可   for  pdf_pg 拷贝pdf_mt.pages [50:53]:   ,,   #,才能获取二维列表   for 才能;pdf_tb 拷贝pdf_pg.extract_tables ():   ,,,,   ,,,#,将其拼接   ,,,pdf_df =, pdf_df.append (pd.DataFrame (np.array (pdf_tb),列=[& # 39;项目& # 39;,,& # 39;附注& # 39;,,& # 39;期末余额& # 39;,,& # 39;期初余额& # 39;)))      #,显示后五条   pdf_df.tail ()

利用Python怎么将pdf表格导入到excel