'Python騷操作,提取pdf文件中的表格數據'

Python Excel 數據結構 程序員ACE 2019-07-20
"

在實際研究中,我們經常需要獲取大量數據,而這些數據很大一部分以pdf表格的形式呈現,如公司年報、發行上市公告等。面對如此多的數據表格,採用手工複製黏貼的方式顯然並不可取。那麼如何才能高效提取出pdf文件中的表格數據呢?

Python提供了許多可用於pdf表格識別的庫,如camelot、tabula、pdfplumber等。綜合來看,pdfplumber庫的性能較佳,能提取出完整、且相對規範的表格。因此,本推文也主要介紹pdfplumber庫在pdf表格提取中的作用。

作為一個強大的pdf文件解析工具,pdfplumber庫可迅速將pdf文檔轉換為易於處理的txt文檔,並輸出pdf文檔的字符、頁面、頁碼等信息,還可進行頁面可視化操作。使用pdfplumber庫前需先安裝,即在cmd命令行中輸入:

pip install pdfplumber

pdfplumber庫提供了兩種pdf表格提取函數,分別為.extract_tables( )及.extract_table( ),兩種函數提取結果存在差異。為進行演示,我們網站上下載了一份短期融資券主體信用評級報告,為pdf格式。任意選取某一表格,其界面如下:

"

在實際研究中,我們經常需要獲取大量數據,而這些數據很大一部分以pdf表格的形式呈現,如公司年報、發行上市公告等。面對如此多的數據表格,採用手工複製黏貼的方式顯然並不可取。那麼如何才能高效提取出pdf文件中的表格數據呢?

Python提供了許多可用於pdf表格識別的庫,如camelot、tabula、pdfplumber等。綜合來看,pdfplumber庫的性能較佳,能提取出完整、且相對規範的表格。因此,本推文也主要介紹pdfplumber庫在pdf表格提取中的作用。

作為一個強大的pdf文件解析工具,pdfplumber庫可迅速將pdf文檔轉換為易於處理的txt文檔,並輸出pdf文檔的字符、頁面、頁碼等信息,還可進行頁面可視化操作。使用pdfplumber庫前需先安裝,即在cmd命令行中輸入:

pip install pdfplumber

pdfplumber庫提供了兩種pdf表格提取函數,分別為.extract_tables( )及.extract_table( ),兩種函數提取結果存在差異。為進行演示,我們網站上下載了一份短期融資券主體信用評級報告,為pdf格式。任意選取某一表格,其界面如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

接下來,我們簡要分析兩種提取模式下的結果差異。

(1).extract_tables( )

可輸出頁面中所有表格,並返回一個嵌套列表,其結構層次為table→row→cell。此時,頁面上的整個表格被放入一個大列表中,原表格中的各行組成該大列表中的各個子列表。若需輸出單個外層列表元素,得到的便是由原表格同一行元素構成的列表。例如,我們執行如下程序:

"

在實際研究中,我們經常需要獲取大量數據,而這些數據很大一部分以pdf表格的形式呈現,如公司年報、發行上市公告等。面對如此多的數據表格,採用手工複製黏貼的方式顯然並不可取。那麼如何才能高效提取出pdf文件中的表格數據呢?

Python提供了許多可用於pdf表格識別的庫,如camelot、tabula、pdfplumber等。綜合來看,pdfplumber庫的性能較佳,能提取出完整、且相對規範的表格。因此,本推文也主要介紹pdfplumber庫在pdf表格提取中的作用。

作為一個強大的pdf文件解析工具,pdfplumber庫可迅速將pdf文檔轉換為易於處理的txt文檔,並輸出pdf文檔的字符、頁面、頁碼等信息,還可進行頁面可視化操作。使用pdfplumber庫前需先安裝,即在cmd命令行中輸入:

pip install pdfplumber

pdfplumber庫提供了兩種pdf表格提取函數,分別為.extract_tables( )及.extract_table( ),兩種函數提取結果存在差異。為進行演示,我們網站上下載了一份短期融資券主體信用評級報告,為pdf格式。任意選取某一表格,其界面如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

接下來,我們簡要分析兩種提取模式下的結果差異。

(1).extract_tables( )

可輸出頁面中所有表格,並返回一個嵌套列表,其結構層次為table→row→cell。此時,頁面上的整個表格被放入一個大列表中,原表格中的各行組成該大列表中的各個子列表。若需輸出單個外層列表元素,得到的便是由原表格同一行元素構成的列表。例如,我們執行如下程序:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

"

在實際研究中,我們經常需要獲取大量數據,而這些數據很大一部分以pdf表格的形式呈現,如公司年報、發行上市公告等。面對如此多的數據表格,採用手工複製黏貼的方式顯然並不可取。那麼如何才能高效提取出pdf文件中的表格數據呢?

Python提供了許多可用於pdf表格識別的庫,如camelot、tabula、pdfplumber等。綜合來看,pdfplumber庫的性能較佳,能提取出完整、且相對規範的表格。因此,本推文也主要介紹pdfplumber庫在pdf表格提取中的作用。

作為一個強大的pdf文件解析工具,pdfplumber庫可迅速將pdf文檔轉換為易於處理的txt文檔,並輸出pdf文檔的字符、頁面、頁碼等信息,還可進行頁面可視化操作。使用pdfplumber庫前需先安裝,即在cmd命令行中輸入:

pip install pdfplumber

pdfplumber庫提供了兩種pdf表格提取函數,分別為.extract_tables( )及.extract_table( ),兩種函數提取結果存在差異。為進行演示,我們網站上下載了一份短期融資券主體信用評級報告,為pdf格式。任意選取某一表格,其界面如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

接下來,我們簡要分析兩種提取模式下的結果差異。

(1).extract_tables( )

可輸出頁面中所有表格,並返回一個嵌套列表,其結構層次為table→row→cell。此時,頁面上的整個表格被放入一個大列表中,原表格中的各行組成該大列表中的各個子列表。若需輸出單個外層列表元素,得到的便是由原表格同一行元素構成的列表。例如,我們執行如下程序:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

(2).extract_table( )

返回多個獨立列表,其結構層次為row→cell。若頁面中存在多個行數相同的表格,則默認輸出頂部表格;否則,僅輸出行數最多的一個表格。此時,表格的每一行都作為一個單獨的列表,列表中每個元素即為原表格的各個單元格內容。若需輸出某個元素,得到的便是具體的數值或字符串。如下:

"

在實際研究中,我們經常需要獲取大量數據,而這些數據很大一部分以pdf表格的形式呈現,如公司年報、發行上市公告等。面對如此多的數據表格,採用手工複製黏貼的方式顯然並不可取。那麼如何才能高效提取出pdf文件中的表格數據呢?

Python提供了許多可用於pdf表格識別的庫,如camelot、tabula、pdfplumber等。綜合來看,pdfplumber庫的性能較佳,能提取出完整、且相對規範的表格。因此,本推文也主要介紹pdfplumber庫在pdf表格提取中的作用。

作為一個強大的pdf文件解析工具,pdfplumber庫可迅速將pdf文檔轉換為易於處理的txt文檔,並輸出pdf文檔的字符、頁面、頁碼等信息,還可進行頁面可視化操作。使用pdfplumber庫前需先安裝,即在cmd命令行中輸入:

pip install pdfplumber

pdfplumber庫提供了兩種pdf表格提取函數,分別為.extract_tables( )及.extract_table( ),兩種函數提取結果存在差異。為進行演示,我們網站上下載了一份短期融資券主體信用評級報告,為pdf格式。任意選取某一表格,其界面如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

接下來,我們簡要分析兩種提取模式下的結果差異。

(1).extract_tables( )

可輸出頁面中所有表格,並返回一個嵌套列表,其結構層次為table→row→cell。此時,頁面上的整個表格被放入一個大列表中,原表格中的各行組成該大列表中的各個子列表。若需輸出單個外層列表元素,得到的便是由原表格同一行元素構成的列表。例如,我們執行如下程序:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

(2).extract_table( )

返回多個獨立列表,其結構層次為row→cell。若頁面中存在多個行數相同的表格,則默認輸出頂部表格;否則,僅輸出行數最多的一個表格。此時,表格的每一行都作為一個單獨的列表,列表中每個元素即為原表格的各個單元格內容。若需輸出某個元素,得到的便是具體的數值或字符串。如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

"

在實際研究中,我們經常需要獲取大量數據,而這些數據很大一部分以pdf表格的形式呈現,如公司年報、發行上市公告等。面對如此多的數據表格,採用手工複製黏貼的方式顯然並不可取。那麼如何才能高效提取出pdf文件中的表格數據呢?

Python提供了許多可用於pdf表格識別的庫,如camelot、tabula、pdfplumber等。綜合來看,pdfplumber庫的性能較佳,能提取出完整、且相對規範的表格。因此,本推文也主要介紹pdfplumber庫在pdf表格提取中的作用。

作為一個強大的pdf文件解析工具,pdfplumber庫可迅速將pdf文檔轉換為易於處理的txt文檔,並輸出pdf文檔的字符、頁面、頁碼等信息,還可進行頁面可視化操作。使用pdfplumber庫前需先安裝,即在cmd命令行中輸入:

pip install pdfplumber

pdfplumber庫提供了兩種pdf表格提取函數,分別為.extract_tables( )及.extract_table( ),兩種函數提取結果存在差異。為進行演示,我們網站上下載了一份短期融資券主體信用評級報告,為pdf格式。任意選取某一表格,其界面如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

接下來,我們簡要分析兩種提取模式下的結果差異。

(1).extract_tables( )

可輸出頁面中所有表格,並返回一個嵌套列表,其結構層次為table→row→cell。此時,頁面上的整個表格被放入一個大列表中,原表格中的各行組成該大列表中的各個子列表。若需輸出單個外層列表元素,得到的便是由原表格同一行元素構成的列表。例如,我們執行如下程序:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

(2).extract_table( )

返回多個獨立列表,其結構層次為row→cell。若頁面中存在多個行數相同的表格,則默認輸出頂部表格;否則,僅輸出行數最多的一個表格。此時,表格的每一行都作為一個單獨的列表,列表中每個元素即為原表格的各個單元格內容。若需輸出某個元素,得到的便是具體的數值或字符串。如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

在此基礎上,我們詳細介紹如何從pdf文件中提取表格數據。其中一種思路便是將提取出的列表視為一個字符串,結合Python的正則表達式re模塊進行字符串處理後,將其保存為以標準英文逗號分隔、可被Excel識別的csv格式文件,即進行如下操作:

"

在實際研究中,我們經常需要獲取大量數據,而這些數據很大一部分以pdf表格的形式呈現,如公司年報、發行上市公告等。面對如此多的數據表格,採用手工複製黏貼的方式顯然並不可取。那麼如何才能高效提取出pdf文件中的表格數據呢?

Python提供了許多可用於pdf表格識別的庫,如camelot、tabula、pdfplumber等。綜合來看,pdfplumber庫的性能較佳,能提取出完整、且相對規範的表格。因此,本推文也主要介紹pdfplumber庫在pdf表格提取中的作用。

作為一個強大的pdf文件解析工具,pdfplumber庫可迅速將pdf文檔轉換為易於處理的txt文檔,並輸出pdf文檔的字符、頁面、頁碼等信息,還可進行頁面可視化操作。使用pdfplumber庫前需先安裝,即在cmd命令行中輸入:

pip install pdfplumber

pdfplumber庫提供了兩種pdf表格提取函數,分別為.extract_tables( )及.extract_table( ),兩種函數提取結果存在差異。為進行演示,我們網站上下載了一份短期融資券主體信用評級報告,為pdf格式。任意選取某一表格,其界面如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

接下來,我們簡要分析兩種提取模式下的結果差異。

(1).extract_tables( )

可輸出頁面中所有表格,並返回一個嵌套列表,其結構層次為table→row→cell。此時,頁面上的整個表格被放入一個大列表中,原表格中的各行組成該大列表中的各個子列表。若需輸出單個外層列表元素,得到的便是由原表格同一行元素構成的列表。例如,我們執行如下程序:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

(2).extract_table( )

返回多個獨立列表,其結構層次為row→cell。若頁面中存在多個行數相同的表格,則默認輸出頂部表格;否則,僅輸出行數最多的一個表格。此時,表格的每一行都作為一個單獨的列表,列表中每個元素即為原表格的各個單元格內容。若需輸出某個元素,得到的便是具體的數值或字符串。如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

在此基礎上,我們詳細介紹如何從pdf文件中提取表格數據。其中一種思路便是將提取出的列表視為一個字符串,結合Python的正則表達式re模塊進行字符串處理後,將其保存為以標準英文逗號分隔、可被Excel識別的csv格式文件,即進行如下操作:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

"

在實際研究中,我們經常需要獲取大量數據,而這些數據很大一部分以pdf表格的形式呈現,如公司年報、發行上市公告等。面對如此多的數據表格,採用手工複製黏貼的方式顯然並不可取。那麼如何才能高效提取出pdf文件中的表格數據呢?

Python提供了許多可用於pdf表格識別的庫,如camelot、tabula、pdfplumber等。綜合來看,pdfplumber庫的性能較佳,能提取出完整、且相對規範的表格。因此,本推文也主要介紹pdfplumber庫在pdf表格提取中的作用。

作為一個強大的pdf文件解析工具,pdfplumber庫可迅速將pdf文檔轉換為易於處理的txt文檔,並輸出pdf文檔的字符、頁面、頁碼等信息,還可進行頁面可視化操作。使用pdfplumber庫前需先安裝,即在cmd命令行中輸入:

pip install pdfplumber

pdfplumber庫提供了兩種pdf表格提取函數,分別為.extract_tables( )及.extract_table( ),兩種函數提取結果存在差異。為進行演示,我們網站上下載了一份短期融資券主體信用評級報告,為pdf格式。任意選取某一表格,其界面如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

接下來,我們簡要分析兩種提取模式下的結果差異。

(1).extract_tables( )

可輸出頁面中所有表格,並返回一個嵌套列表,其結構層次為table→row→cell。此時,頁面上的整個表格被放入一個大列表中,原表格中的各行組成該大列表中的各個子列表。若需輸出單個外層列表元素,得到的便是由原表格同一行元素構成的列表。例如,我們執行如下程序:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

(2).extract_table( )

返回多個獨立列表,其結構層次為row→cell。若頁面中存在多個行數相同的表格,則默認輸出頂部表格;否則,僅輸出行數最多的一個表格。此時,表格的每一行都作為一個單獨的列表,列表中每個元素即為原表格的各個單元格內容。若需輸出某個元素,得到的便是具體的數值或字符串。如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

在此基礎上,我們詳細介紹如何從pdf文件中提取表格數據。其中一種思路便是將提取出的列表視為一個字符串,結合Python的正則表達式re模塊進行字符串處理後,將其保存為以標準英文逗號分隔、可被Excel識別的csv格式文件,即進行如下操作:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

儘管能獲得完整的表格數據,但這種方法相對不易理解,且在處理結構不規則的表格時容易出錯。由於通過pdfplumber庫提取出的表格數據為整齊的列表結構,且含有數字、字符串等數據類型。因此,我們可調用pandas庫下的DataFrame( )函數,將列表轉換為可直接輸出至Excel的DataFrame數據結構。DataFrame的基本構造函數如下:

DataFrame([data,index, columns])

三個參數data、index和columns分別代表創建對象、行索引和列索引。DataFrame類型可由二維ndarray對象、列表、字典、元組等創建。本推文中的data即指整個pdf表格,提取程序如下:

"

在實際研究中,我們經常需要獲取大量數據,而這些數據很大一部分以pdf表格的形式呈現,如公司年報、發行上市公告等。面對如此多的數據表格,採用手工複製黏貼的方式顯然並不可取。那麼如何才能高效提取出pdf文件中的表格數據呢?

Python提供了許多可用於pdf表格識別的庫,如camelot、tabula、pdfplumber等。綜合來看,pdfplumber庫的性能較佳,能提取出完整、且相對規範的表格。因此,本推文也主要介紹pdfplumber庫在pdf表格提取中的作用。

作為一個強大的pdf文件解析工具,pdfplumber庫可迅速將pdf文檔轉換為易於處理的txt文檔,並輸出pdf文檔的字符、頁面、頁碼等信息,還可進行頁面可視化操作。使用pdfplumber庫前需先安裝,即在cmd命令行中輸入:

pip install pdfplumber

pdfplumber庫提供了兩種pdf表格提取函數,分別為.extract_tables( )及.extract_table( ),兩種函數提取結果存在差異。為進行演示,我們網站上下載了一份短期融資券主體信用評級報告,為pdf格式。任意選取某一表格,其界面如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

接下來,我們簡要分析兩種提取模式下的結果差異。

(1).extract_tables( )

可輸出頁面中所有表格,並返回一個嵌套列表,其結構層次為table→row→cell。此時,頁面上的整個表格被放入一個大列表中,原表格中的各行組成該大列表中的各個子列表。若需輸出單個外層列表元素,得到的便是由原表格同一行元素構成的列表。例如,我們執行如下程序:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

(2).extract_table( )

返回多個獨立列表,其結構層次為row→cell。若頁面中存在多個行數相同的表格,則默認輸出頂部表格;否則,僅輸出行數最多的一個表格。此時,表格的每一行都作為一個單獨的列表,列表中每個元素即為原表格的各個單元格內容。若需輸出某個元素,得到的便是具體的數值或字符串。如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

在此基礎上,我們詳細介紹如何從pdf文件中提取表格數據。其中一種思路便是將提取出的列表視為一個字符串,結合Python的正則表達式re模塊進行字符串處理後,將其保存為以標準英文逗號分隔、可被Excel識別的csv格式文件,即進行如下操作:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

儘管能獲得完整的表格數據,但這種方法相對不易理解,且在處理結構不規則的表格時容易出錯。由於通過pdfplumber庫提取出的表格數據為整齊的列表結構,且含有數字、字符串等數據類型。因此,我們可調用pandas庫下的DataFrame( )函數,將列表轉換為可直接輸出至Excel的DataFrame數據結構。DataFrame的基本構造函數如下:

DataFrame([data,index, columns])

三個參數data、index和columns分別代表創建對象、行索引和列索引。DataFrame類型可由二維ndarray對象、列表、字典、元組等創建。本推文中的data即指整個pdf表格,提取程序如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

其中,table[1:]表示選定整個表格進行DataFrame對象創建,columns=table[0]表示將表格第一行元素作為列變量名,且不創建行索引。輸出Excel表格如下:

"

在實際研究中,我們經常需要獲取大量數據,而這些數據很大一部分以pdf表格的形式呈現,如公司年報、發行上市公告等。面對如此多的數據表格,採用手工複製黏貼的方式顯然並不可取。那麼如何才能高效提取出pdf文件中的表格數據呢?

Python提供了許多可用於pdf表格識別的庫,如camelot、tabula、pdfplumber等。綜合來看,pdfplumber庫的性能較佳,能提取出完整、且相對規範的表格。因此,本推文也主要介紹pdfplumber庫在pdf表格提取中的作用。

作為一個強大的pdf文件解析工具,pdfplumber庫可迅速將pdf文檔轉換為易於處理的txt文檔,並輸出pdf文檔的字符、頁面、頁碼等信息,還可進行頁面可視化操作。使用pdfplumber庫前需先安裝,即在cmd命令行中輸入:

pip install pdfplumber

pdfplumber庫提供了兩種pdf表格提取函數,分別為.extract_tables( )及.extract_table( ),兩種函數提取結果存在差異。為進行演示,我們網站上下載了一份短期融資券主體信用評級報告,為pdf格式。任意選取某一表格,其界面如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

接下來,我們簡要分析兩種提取模式下的結果差異。

(1).extract_tables( )

可輸出頁面中所有表格,並返回一個嵌套列表,其結構層次為table→row→cell。此時,頁面上的整個表格被放入一個大列表中,原表格中的各行組成該大列表中的各個子列表。若需輸出單個外層列表元素,得到的便是由原表格同一行元素構成的列表。例如,我們執行如下程序:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

(2).extract_table( )

返回多個獨立列表,其結構層次為row→cell。若頁面中存在多個行數相同的表格,則默認輸出頂部表格;否則,僅輸出行數最多的一個表格。此時,表格的每一行都作為一個單獨的列表,列表中每個元素即為原表格的各個單元格內容。若需輸出某個元素,得到的便是具體的數值或字符串。如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

在此基礎上,我們詳細介紹如何從pdf文件中提取表格數據。其中一種思路便是將提取出的列表視為一個字符串,結合Python的正則表達式re模塊進行字符串處理後,將其保存為以標準英文逗號分隔、可被Excel識別的csv格式文件,即進行如下操作:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

儘管能獲得完整的表格數據,但這種方法相對不易理解,且在處理結構不規則的表格時容易出錯。由於通過pdfplumber庫提取出的表格數據為整齊的列表結構,且含有數字、字符串等數據類型。因此,我們可調用pandas庫下的DataFrame( )函數,將列表轉換為可直接輸出至Excel的DataFrame數據結構。DataFrame的基本構造函數如下:

DataFrame([data,index, columns])

三個參數data、index和columns分別代表創建對象、行索引和列索引。DataFrame類型可由二維ndarray對象、列表、字典、元組等創建。本推文中的data即指整個pdf表格,提取程序如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

其中,table[1:]表示選定整個表格進行DataFrame對象創建,columns=table[0]表示將表格第一行元素作為列變量名,且不創建行索引。輸出Excel表格如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

通過以上簡單程序,我們便提取出了完整的pdf表格。但需注意的是,面對不規則的表格數據提取,創建DataFrame對象的方法依然可能出錯,在實際操作中還需進行核對。

小編整理了一套python視頻教程+電子書資料免費送給同學們!

領取方式:

轉發+私信小編(學習)即可獲得!

"

在實際研究中,我們經常需要獲取大量數據,而這些數據很大一部分以pdf表格的形式呈現,如公司年報、發行上市公告等。面對如此多的數據表格,採用手工複製黏貼的方式顯然並不可取。那麼如何才能高效提取出pdf文件中的表格數據呢?

Python提供了許多可用於pdf表格識別的庫,如camelot、tabula、pdfplumber等。綜合來看,pdfplumber庫的性能較佳,能提取出完整、且相對規範的表格。因此,本推文也主要介紹pdfplumber庫在pdf表格提取中的作用。

作為一個強大的pdf文件解析工具,pdfplumber庫可迅速將pdf文檔轉換為易於處理的txt文檔,並輸出pdf文檔的字符、頁面、頁碼等信息,還可進行頁面可視化操作。使用pdfplumber庫前需先安裝,即在cmd命令行中輸入:

pip install pdfplumber

pdfplumber庫提供了兩種pdf表格提取函數,分別為.extract_tables( )及.extract_table( ),兩種函數提取結果存在差異。為進行演示,我們網站上下載了一份短期融資券主體信用評級報告,為pdf格式。任意選取某一表格,其界面如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

接下來,我們簡要分析兩種提取模式下的結果差異。

(1).extract_tables( )

可輸出頁面中所有表格,並返回一個嵌套列表,其結構層次為table→row→cell。此時,頁面上的整個表格被放入一個大列表中,原表格中的各行組成該大列表中的各個子列表。若需輸出單個外層列表元素,得到的便是由原表格同一行元素構成的列表。例如,我們執行如下程序:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

(2).extract_table( )

返回多個獨立列表,其結構層次為row→cell。若頁面中存在多個行數相同的表格,則默認輸出頂部表格;否則,僅輸出行數最多的一個表格。此時,表格的每一行都作為一個單獨的列表,列表中每個元素即為原表格的各個單元格內容。若需輸出某個元素,得到的便是具體的數值或字符串。如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

在此基礎上,我們詳細介紹如何從pdf文件中提取表格數據。其中一種思路便是將提取出的列表視為一個字符串,結合Python的正則表達式re模塊進行字符串處理後,將其保存為以標準英文逗號分隔、可被Excel識別的csv格式文件,即進行如下操作:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

輸出結果:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

儘管能獲得完整的表格數據,但這種方法相對不易理解,且在處理結構不規則的表格時容易出錯。由於通過pdfplumber庫提取出的表格數據為整齊的列表結構,且含有數字、字符串等數據類型。因此,我們可調用pandas庫下的DataFrame( )函數,將列表轉換為可直接輸出至Excel的DataFrame數據結構。DataFrame的基本構造函數如下:

DataFrame([data,index, columns])

三個參數data、index和columns分別代表創建對象、行索引和列索引。DataFrame類型可由二維ndarray對象、列表、字典、元組等創建。本推文中的data即指整個pdf表格,提取程序如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

其中,table[1:]表示選定整個表格進行DataFrame對象創建,columns=table[0]表示將表格第一行元素作為列變量名,且不創建行索引。輸出Excel表格如下:

Python騷操作,提取pdf文件中的表格數據

Python騷操作,提取pdf文件中的表格數據!

通過以上簡單程序,我們便提取出了完整的pdf表格。但需注意的是,面對不規則的表格數據提取,創建DataFrame對象的方法依然可能出錯,在實際操作中還需進行核對。

小編整理了一套python視頻教程+電子書資料免費送給同學們!

領取方式:

轉發+私信小編(學習)即可獲得!

Python騷操作,提取pdf文件中的表格數據
"

相關推薦

推薦中...