最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何利用Python提取pdf中的表格數(shù)據(jù)(附實(shí)戰(zhàn)案例)

 更新時(shí)間:2022年11月10日 09:09:16   作者:艾派森  
從PDF表格中獲取數(shù)據(jù)是一項(xiàng)痛苦的工作,下面這篇文章主要給大家介紹了關(guān)于如何利用Python提取pdf中的表格數(shù)據(jù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

今天給大家介紹一個(gè)Python使用工具,那就是從pdf文件中讀取表格數(shù)據(jù),主要用到第三方庫(kù) pdfplumber。

pdfplumber簡(jiǎn)介

pdfplumber是一款基于pdfminer,完全由python開(kāi)發(fā)的pdf文檔解析庫(kù),不僅可以獲取每個(gè)字符、矩形框、線等對(duì)象的具體信息,而且還可以抽取文本和表格。目前pdfplumber僅支持可編輯的pdf文檔。

雖然pdfminer也可以對(duì)可編輯的pdf文檔進(jìn)行解析,但是比較而言,pdfplumber有以下優(yōu)勢(shì):

  1. 二者都可以獲取到每個(gè)字符、矩形框、線等對(duì)象的具體信息,但是pdfplumber在pdfminer的基礎(chǔ)上進(jìn)行了封裝和處理,使得到的對(duì)象更易于使用,對(duì)用戶更友好。
  2. 二者都能對(duì)文本解析,但是pdfminer輸出的文本在布局上可能與原文差別比較大,但是pdfplumber抽取出的文本與原文可以有更高的一致性。
  3. pdfplumber實(shí)現(xiàn)了表格抽取邏輯,基于最基本的字符、線框等對(duì)象的位置信息,定位、識(shí)別pdf文檔中的表格。

 首先安裝

pip install pdfplumber

實(shí)戰(zhàn)案例

本次實(shí)戰(zhàn),我們需要將pdf中的獲獎(jiǎng)隊(duì)伍信息提取出來(lái),然后保存到excel表格中。

?原始pdf文件中大多數(shù)都是如上圖所示的表格,這里為了不泄露個(gè)人隱私,我就先打上碼了哈。

接著開(kāi)始敲代碼提取表格數(shù)據(jù)!

import pandas as pd
import pdfplumber
 
pdf = pdfplumber.open("第十屆“正大杯”國(guó)獎(jiǎng)名單.pdf")
df = pd.DataFrame()
for i in range(3,53):  # 這里3是指表格信息是從第4頁(yè)開(kāi)始的(程序計(jì)數(shù)是從0開(kāi)始,所以這里第4頁(yè)對(duì)應(yīng)程序中的3),53是結(jié)束位置
    page = pdf.pages[i]  # 讀取pdf中的每一頁(yè)
    table = page.extract_table()  # 從頁(yè)數(shù)據(jù)中提取表格數(shù)據(jù)
    df = df.append(table)  # 將提取的數(shù)據(jù)轉(zhuǎn)換為DataFrame二維表格形式
df.drop_duplicates(inplace=True)   # 刪除重復(fù)值
df.to_excel("第十屆“正大杯”國(guó)獎(jiǎng)名單.xlsx", header=False, index=False)  # 將提取的數(shù)據(jù)保存為excel

這里,我先是用了循環(huán)來(lái)提取多頁(yè),3是指表格信息是從第4頁(yè)開(kāi)始的(程序計(jì)數(shù)是從0開(kāi)始,所以這里第4頁(yè)對(duì)應(yīng)程序中的3),53是結(jié)束位置 。

 運(yùn)行之后的結(jié)果如下:

?很簡(jiǎn)單就將pdf中的表格提取出來(lái)了。

做到這里,我只是將一個(gè)pdf中的數(shù)據(jù)提取出來(lái)了,可是還有幾個(gè)類(lèi)似的pdf需要提取,于是我將上述代碼功能進(jìn)行了簡(jiǎn)單的封裝(功能還比較簡(jiǎn)陋,各位可根據(jù)自己的需要進(jìn)行擴(kuò)展)。

def pdf_to_excel(file_path,start:int,end:int,excel_name=None):
    '''
    params:
        file_path:需要提取表格的pdf文件的絕對(duì)路徑
        start:出現(xiàn)表格的起始頁(yè)碼
        end:表格結(jié)束頁(yè)碼
        excel_name:最后保存excel文件的文件名(默認(rèn)為原始pdf文件名)
    '''
    pdf = pdfplumber.open(file_path)
    if not excel_name:
        excel_name = file_path.split('\\')[-1].split('.')[0]
    df_result = pd.DataFrame()
    for i in range(start-1,end):
        page = pdf.pages[i]
        table = page.extract_table()
        df_result = df_result.append(table)
    df_result = df_result.drop_duplicates(inplace=True)
    df_result.to_excel(excel_name+'.xlsx',index=False)
 
pdf_to_excel(file_path=r'C:xxx.pdf',start=4,end=53)

以上就是本次分享的python小工具,希望對(duì)有同樣需求的你有所幫助!

到此這篇關(guān)于如何利用Python提取pdf中的表格數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Python提取pdf表格數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python與idea的集成的實(shí)現(xiàn)

    python與idea的集成的實(shí)現(xiàn)

    這篇文章主要介紹了 python與idea的集成的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python如何計(jì)算語(yǔ)句執(zhí)行時(shí)間

    Python如何計(jì)算語(yǔ)句執(zhí)行時(shí)間

    這篇文章主要介紹了Python如何計(jì)算語(yǔ)句執(zhí)行時(shí)間,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 基于Python創(chuàng)建語(yǔ)音識(shí)別控制系統(tǒng)

    基于Python創(chuàng)建語(yǔ)音識(shí)別控制系統(tǒng)

    這篇文章主要介紹了通過(guò)Python實(shí)現(xiàn)創(chuàng)建語(yǔ)音識(shí)別控制系統(tǒng),能利用語(yǔ)音識(shí)別識(shí)別說(shuō)出來(lái)的文字,根據(jù)文字的內(nèi)容來(lái)控制圖形移動(dòng),感興趣的同學(xué)可以關(guān)注一下
    2021-12-12
  • Python中的迭代器漫談

    Python中的迭代器漫談

    這篇文章主要介紹了Python中的迭代器漫談,本文主要講解range函數(shù)和xrange函數(shù)性能區(qū)別,需要的朋友可以參考下
    2015-02-02
  • python多線程之事件Event的使用詳解

    python多線程之事件Event的使用詳解

    本篇文章主要介紹了python多線程之事件Event的使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python2.x與Python3.x的區(qū)別

    Python2.x與Python3.x的區(qū)別

    這篇文章主要介紹了Python2.x與Python3.x的區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • 簡(jiǎn)潔的十分鐘Python入門(mén)教程

    簡(jiǎn)潔的十分鐘Python入門(mén)教程

    這篇文章主要介紹了簡(jiǎn)潔的十分鐘Python入門(mén)教程,Python語(yǔ)言本身的簡(jiǎn)潔也使得網(wǎng)絡(luò)上各種Python快門(mén)入門(mén)教程有著很高的人氣,本文是國(guó)內(nèi)此類(lèi)其中的一篇,需要的朋友可以參考下
    2015-04-04
  • Python中的推導(dǎo)式使用詳解

    Python中的推導(dǎo)式使用詳解

    這篇文章主要介紹了Python中的推導(dǎo)式使用詳解,本文分別講解了列表推導(dǎo)式、字典推導(dǎo)式、集合推導(dǎo)式使用實(shí)例,需要的朋友可以參考下
    2015-06-06
  • python 爬取小說(shuō)并下載的示例

    python 爬取小說(shuō)并下載的示例

    這篇文章主要介紹了python 爬取小說(shuō)并下載的示例,幫助大家更好的理解和學(xué)習(xí)python爬蟲(chóng),感興趣的朋友可以了解下
    2020-12-12
  • Python中如何處理常見(jiàn)報(bào)錯(cuò)

    Python中如何處理常見(jiàn)報(bào)錯(cuò)

    大家好,本篇文章主要講的是Python中如何處理常見(jiàn)報(bào)錯(cuò),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01

最新評(píng)論

胶南市| 永新县| 大悟县| 东光县| 赣州市| 方山县| 彭水| 广灵县| 晋州市| 西峡县| 新兴县| 大邑县| 高安市| 陇川县| 霍邱县| 金湖县| 南皮县| 抚宁县| 阳东县| 松阳县| 桂平市| 宜川县| 福建省| 醴陵市| 洛扎县| 漠河县| 沂南县| 大同市| 正镶白旗| 岢岚县| 昌都县| 曲沃县| 阳朔县| 牟定县| 尖扎县| 绍兴市| 金门县| 福海县| 北安市| 洪洞县| 蒙山县|