本文目錄一覽:
- 1、Python利器:如何處理PDF表格數據
- 2、哪位大神知道如何用Python中的docx模塊刪除docx文檔中的表格?
- 3、python刪除打不開的pdf
- 4、Python解析PDF表格——PDFPlumber vs Camelot
- 5、Python 哪個庫可以刪除Excel表格的某行或某列
Python利器:如何處理PDF表格數據
大家好,我是Peter~
在很多情況下,我們都需要處理PDF格式的文件。尤其當我們遇到PDF表格數據需要進行提取,真的是一個令人頭疼的問題。
因為PDF文件不能像Word那樣直接複製,即使複製了再黏貼也可能會出現格式排版錯亂甚至亂碼問題。如何從一個PDF文件提取出表格數據?本文提供兩個解決方案:
首先提供的一種方法是從文字 PDF 中提取表格信息的工具:Camelot,它能夠直接將大部分表格轉換為 Pandas 的 Dataframe。
更多的詳細信息,請參考項目地址:
camelot的安裝有多種方式。如果有報錯,網上一般有解決方式:
1、通過conda安裝
2、使用pip進行安裝
3、通過GitHub進行安裝
首先將項目複製到本地:
然後進入文件中進行安裝:
下面通過一個案例來講解如何使用camelot。假設我們現在有一個只有一頁的PDF文件test.pdf:
1、先讀取文件
導出成csv格式的數據(方式1)
查看tables的相關信息:
導出方式2:
將數據轉換成DataFrame:
tabula的功能比camelot更加強大,可以同時對多個表格數據進行提取。項目的具體地址請參考:
tabula的安裝是非常簡單的:
安裝之後檢驗這個庫是否安裝成功:
通過tabula這個庫來讀取PDF文件:
然後我們發現列表中唯一的一個元素就是dataframe:
將讀取到的數據輸出成CSV格式的文件:
上面讀取的PDF文件是比較簡單的,只有一頁,而且剛好是一個很標準的表格形式的數據,下面看一個比較複雜的例子:
下面是第一頁,第一列可以看成是索引:
在第二頁中有兩份表格,而且中間有很多的空白行:
第三頁的數據比較標準:
這3頁是在同一個PDF文件中,這3頁是在同一個PDF文件中,這3頁是在同一個PDF文件中
上面的紅色提示中我們看到:當沒有指定pages參數的時候,只會默認讀取第一頁的數據,所以列表的長度為1。
轉成dataframe後將原來的索引變成新的一列 (部分數據)
通過pages來讀取全部數據:
通過指定pages=”all”:
同時獲取兩個表格的數據:
通過area參數來指定:
刪除在讀取的表格中我們不需要的字段信息
可以將得到的數據輸出成不同格式的文件,以json格式為例:
我們可以看到
哪位大神知道如何用Python中的docx模塊刪除docx文檔中的表格?
可以使用docx模塊。
from docx import Document # 導入庫”””word表格中”””
path = “C:\\Users\\1\\Desktop\\測試.docx” # 文件路徑
document = Document(path) # 讀入文件
tables = document.tables # 獲取文件中的表格集
刪掉指定的那一個表格即可
希望我的回答對你有幫助~
python刪除打不開的pdf
python刪除打不開的pdf可以用以下方法:
1、python內要對pdf文件進行操作的話,一般都是使用PyPDF2這個第三方模塊,而刪除pdf頁面則需要先將這個文件對象實例化到python中並且創建一個數據寫入工具才可以來保存pdf文件。
2、使用for循環去迭代這個reader對象,這個reader對象還要調用getNumPages()方法,此方法的作用就是獲取到這個pdf文件的頁數,在循環之中創建一個空文檔並且將獲取到pdf頁給寫入。
Python解析PDF表格——PDFPlumber vs Camelot
題圖來自 Camelot: List o’ 10 Intriguing Mythical Places
為獲取LEED認證項目的評分表明細,可以從USGBC的項目頁面上爬取,或者從pdf格式的項目評分表中解析得到。以 重慶某LEED EM:OB v2009 Gold項目 為例,USGBC上公布的 LEED項目得分表 其格式並不統一,利用XPath爬取後需要進一步清洗處理。相對而言,LEED項目所對應的 項目評分表PDF文件 的數據更為規範完整。因此考慮嘗試解析出PDF文件中的表格,以便後續分析。
Python 處理PDF文件的程序包,pdfminer、tabula、pdfplumber、camelot……查詢資料表明,似乎普遍認為pdfminer的效果不怎麼好,而tabula需要java支持 ,想偷懶於是只試了pdfplumber和camelot。
安裝過程不贅述,直接來看運行結果。
pdfplumber無法直接解析出Scorecard.pdf文件中的表格,但實際上要解決此問題也並非難事。調整下思路,可先解析出pdf文件中的文本,讓後通過分列來得到表格。
利用pdfplumber的extract_text()命令可解析出pdf文件中的文本,但由於本次需要解析的得分表pdf文件的排版的原因,左右兩個表格的文本行並未完全對齊,因此如果直接解析完整頁面上的文本的話,文字會出錯。先用corp()命令指定識別範圍,然後再extract_text(),識別得到的文本列表如下所示。
對於類似本例中Scorecard.pdf表格排版有錯位的情況,也可以按照表格在頁面中所處的位置,指定表格識別的範圍。所用到的指令:camelot.plot()可以繪製出頁面的略圖,table_area參數可以指定表格識別的範圍。
又及,Camelot原來是亞瑟王和圓桌騎士們的宮殿所在地,和Asgard的Valhalla一樣,也是傳說中的聖域。搜索camelot程序安裝包時無意中學到的,漲知識了。
[1] Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及對比
[2] 用Python提取pdf文件中的表格數據
[3] python讀取pdf文件
[4] Github: pdfplumber
[5] Camelot: PDF Table Extraction for Humans
[6] ImageMagick Installation
[7] ImageMagick之PDF轉換成圖片(image)
[8] LEED 2009 for Existing Buildings: Operations Maintenance
[9] Camelot – Wikipedia
[10] List o’ 10 Intriguing Mythical Places
[11] Camelot識別pdf表格時的參數設置補充
Python 哪個庫可以刪除Excel表格的某行或某列
openpyxl 2.5以上版本可以刪除Excel表格的某行或某列。
示例代碼:
from openpyxl import *。
filename = ‘test.xlsx’。
wb = wb = load_workbook(filename)。
ws = wb.active。
ws.delete_rows(2,2) #刪除index為2後面的2行。
擴展資料:
Python在執行時,首先會將.py文件中的源代碼編譯成Python的byte code(字節碼),然後再由Python Virtual Machine(Python虛擬機)來執行這些編譯好的byte code。
這種機制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine與Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一種更高級的Virtual Machine。
參考資料來源:百度百科-Python
原創文章,作者:SCHA,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/140670.html