基于Python快速處理PDF表格數(shù)據(jù)
我們有下面一張PDF格式存儲(chǔ)的表格,現(xiàn)在需要使用Python將它提取出來(lái)。

使用Python提取表格數(shù)據(jù)需要使用pdfplumber模塊,打開(kāi)CMD,安裝代碼如下:
pip install pdfplumber
安裝完之后,將需要使用的模塊導(dǎo)入
import pdfplumberimport pandas as pd
然后打開(kāi)PDF文件
# 使用with語(yǔ)句打開(kāi)pdf文件
with pdfplumber.open("D:\\python\\cai\\yq.pdf") as pdf:
# pages[0]表示取第1頁(yè)
page = pdf.pages[0]
我們來(lái)打印輸出下獲取到的文本,這句語(yǔ)句只是幫我們驗(yàn)證下是否成功獲取到PDF里的內(nèi)容
print(page.extract_text())
執(zhí)行的結(jié)果如下,看來(lái)是成功了

然后可以使用extract_table()函數(shù)獲取表格,如果有多個(gè)表格,可以使用extract_tables()函數(shù),就是多了個(gè)s
d1=page.extract_table()
執(zhí)行代碼后,將得到一個(gè)列表,還不是數(shù)據(jù)框

所以最后一步就是將列表轉(zhuǎn)為數(shù)據(jù)框就可以了,代碼如下:
df = pd.DataFrame(d1[1:], columns=d1[0])
執(zhí)行代碼后,將得到了df數(shù)據(jù)框

有幾個(gè)注意事項(xiàng)要提醒下:
1.pdf表格中的數(shù)據(jù),對(duì)于同一個(gè)數(shù)據(jù)或內(nèi)容,不要有換行,如果換行,可能被識(shí)別為2個(gè)數(shù)據(jù);
2.pdf中的表格一定要有邊框,沒(méi)有邊框的話(huà),否則使用extract_table()函數(shù)就無(wú)法獲取表格數(shù)據(jù),extract_text()還是可以獲取文本信息的,不要問(wèn)我是怎么知道的,說(shuō)多了都是淚。
我們現(xiàn)在有一份PDF數(shù)據(jù),里面有三頁(yè),每頁(yè)都有一樣數(shù)據(jù)結(jié)構(gòu)但數(shù)據(jù)不同的數(shù)據(jù)表,現(xiàn)在需要使用Python將它批量提取出來(lái)。



有了上回經(jīng)驗(yàn),我們就直接上代碼:
import pdfplumber
import pandas as pd
# 創(chuàng)建一個(gè)空數(shù)據(jù)框
df = pd.DataFrame()
# 使用with語(yǔ)句打開(kāi)pdf文件
with pdfplumber.open("D:\\python\\cai\\5.pdf") as pdf:
# 使用for循環(huán)遍歷每個(gè)pages
for page in pdf.pages:
# 取出當(dāng)前頁(yè)表格,結(jié)果為列表
d=page.extract_table()
# 將列表轉(zhuǎn)為數(shù)據(jù)框
df1 = pd.DataFrame(d[1:], columns=d[0])
#添加至df數(shù)據(jù)框中
df = df.append(df1)
執(zhí)行代碼后,將得到了df數(shù)據(jù)框

是不是so easy 呢?
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python中pow()和math.pow()函數(shù)用法示例
這篇文章主要介紹了Python中pow()和math.pow()函數(shù)用法,結(jié)合具體實(shí)例形式分析了Python使用pow()和math.pow()函數(shù)進(jìn)行冪運(yùn)算的相關(guān)操作技巧,需要的朋友可以參考下2018-02-02
python3兩數(shù)相加的實(shí)現(xiàn)示例
這篇文章主要介紹了python3兩數(shù)相加的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
python中翻譯功能translate模塊實(shí)現(xiàn)方法
在本篇文章中小編給各位整理了一篇關(guān)于python中翻譯功能translate模塊實(shí)現(xiàn)方法,有需要的朋友們可以參考下。2020-12-12
Pytorch生成隨機(jī)數(shù)Tensor的方法匯總
這篇文章主要介紹了Pytorch生成隨機(jī)數(shù)Tensor的方法匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
win10下python2和python3共存問(wèn)題解決方法
在本篇文章里小編給大家整理了關(guān)于win10下python2和python3共存問(wèn)題解決方法,有興趣的朋友們參考下。2019-12-12
如何使用python的ctypes調(diào)用醫(yī)保中心的dll動(dòng)態(tài)庫(kù)下載醫(yī)保中心的賬單
這篇文章主要介紹了如何使用python的ctypes調(diào)用醫(yī)保中心的dll動(dòng)態(tài)庫(kù)下載醫(yī)保中心的賬單,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
Python利用 utf-8-sig 編碼格式解決寫(xiě)入 csv 文件亂碼問(wèn)題
這篇文章主要介紹了Python利用 utf-8-sig 編碼格式解決寫(xiě)入 csv 文件亂碼問(wèn)題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
python畫(huà)一個(gè)玫瑰和一個(gè)愛(ài)心
這篇文章主要教大家用python畫(huà)一個(gè)玫瑰和一個(gè)愛(ài)心,作為女生節(jié)禮物,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
Python編程實(shí)現(xiàn)控制cmd命令行顯示顏色的方法示例
這篇文章主要介紹了Python編程實(shí)現(xiàn)控制cmd命令行顯示顏色的方法,結(jié)合實(shí)例形式分析了Python針對(duì)命令行字符串顯示顏色屬性相關(guān)操作技巧,需要的朋友可以參考下2017-08-08

