中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用Python怎么將pdf表格導入到excel

發布時間:2021-01-22 14:38:50 來源:億速云 閱讀:651 作者:Leah 欄目:開發技術

這篇文章給大家介紹利用Python怎么將pdf表格導入到excel,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

避免CV大法

pdf 文件的表格的數據可以復制,但是這是一項非常繁瑣的事情。所以我首先考慮的是,Python 可否幫助我們高效且規范地讀取 pdf 中的表格數據。所以一頓的檢索,發現了一個比較優質處理 pdf 的庫:pdfplumber,當然這個庫需要大家 pip install pdfplumber 去進行安裝。

  • 導入 pdfplumber 庫

  • 通過 pdfplumber.open() 函數 獲取 mt2018.pdf 文件對象

  • 通過該 對象.pages 獲取 pdf 每頁的對象,截取我們需要的頁對象即可

  • 通過 頁對象.extract_tables() 獲取表格數據(若需要獲取文本:頁對象.extract_text())

代碼實現:

import pdfplumber


# 獲取 pdf 文件對象
pdf_mt = pdfplumber.open("mt2018.pdf")

# 因為我需要獲取的資產負債表在 51-53頁 但是索引從0開始 所以切片取 50-52即可
for pdf_pg in pdf_mt.pages[50:53]:
  
  # 只提取當前頁表格數據 
  print(pdf_pg.extract_tables())
  
  
--------------------------------------------------------------------------
結果比較多,截取一部分:
[[['項目', '附注', '期末余額', '期初余額'], ['流動資產:', '', '', ''], ['貨幣資金', '1', '112,074,791,420.06', '87,868,869,913.34'], ['結算備付金', '', '', ''], ['拆出資金', '', '', ''], ['以公允價值計量且其變動計入當\n期損益的金融資產', '', '', ''], ['衍生金融資產', '', '', ''], ['應收票據及應收賬款', '2', '563,739,710.00', '1,221,706,039.00']]]

將完整表保存到 csv 文件中

我們發現,返回的數據集是一個三維的列表。那么在我們平時處理的 excel 表格數據(行與列)都是二維的數據。那么,這多出的一維是什么呢?其實就是我們的夜[頁]~ 再來一個循環取出二維數據進行保存即可

for pdf_pg in pdf_mt.pages[50:53]:
  for pdf_tb in pdf_pg.extract_tables():
    print(pdf_tb)
    
------------------------------------------------------------------------------
結果比較多,截取一部分:
[['項目', '附注', '期末余額', '期初余額'], ['流動資產:', '', '', ''], ['貨幣資金', '1', '112,074,791,420.06', '87,868,869,913.34'], ['結算備付金', '', '', ''], ['拆出資金', '', '', ''], ['以公允價值計量且其變動計入當\n期損益的金融資產', '', '', ''], ['衍生金融資產', '', '', ''], ['應收票據及應收賬款', '2', '563,739,710.00', '1,221,706,039.00']]

但是,真的那么簡單嗎?這時,我們就需要細品我們的 pdf 了,如下圖

利用Python怎么將pdf表格導入到excel

我們發現,一張完整的資產負債表分布在多頁上。也就是說,每一頁的里面的表格數據都是一個三維的列表,所以我們保存數據的時候,需要讓其有共同的表頭(列索引),并且進行拼接。

那必須就要強推我們的 pandas 了,pandas.DataFrame() 非常完美的創建表格式的二維數組,以及指定列索引(表頭)。包括可以直接 使用 df.append() 進行共同表頭數據的堆疊拼接。

import pdfplumber
import pandas as pd
import numpy as np

# 創建僅有表頭的 dataframe 數組
pdf_df = pd.DataFrame(columns=['項目', '附注', '期末余額', '期初余額'])

# 獲取 pdf 文件對象
pdf_mt = pdfplumber.open("mt2018.pdf")

# 因為我需要獲取的資產負債表在 51-53頁 但是索引從0開始 所以切片取 50-52即可
for pdf_pg in pdf_mt.pages[50:53]:
  
  # 獲取二維列表
  for pdf_tb in pdf_pg.extract_tables():
    
    # 將其拼接
    pdf_df = pdf_df.append(pd.DataFrame(np.array(pdf_tb),columns=['項目', '附注', '期末余額', '期初余額']))

# 顯示后五條
pdf_df.tail()

dataframe數據輸出如下:

利用Python怎么將pdf表格導入到excel

pdf 53頁如下:

利用Python怎么將pdf表格導入到excel

實際上,大家也發現,我們獲取的最后一頁的數據還有一部分是另一個表的,所以我們需要將其去除,并且有序的設置行索引,再保存到 csv 文件中。

# 去除后三行
pdf_df = pdf_df.iloc[:-3,:]

# 重置索引
pdf_df = pdf_df.reset_index(drop=True)

# 保存到 csv 文件中
pdf_df.to_csv("mt_2018.csv")

關于利用Python怎么將pdf表格導入到excel就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铁岭县| 峨眉山市| 板桥市| 临汾市| 隆尧县| 民乐县| 马公市| 松滋市| 富川| 广元市| 准格尔旗| 南投市| 泰来县| 威信县| 肇源县| 信宜市| 安多县| 社会| 东阿县| 镇原县| 孙吴县| 响水县| 六安市| 建始县| 连城县| 静安区| 乡宁县| 介休市| 宁陕县| 广南县| 阳信县| 阿荣旗| 墨竹工卡县| 嘉荫县| 丘北县| 林甸县| 嵩明县| 胶南市| 绥滨县| 昭苏县| 崇阳县|