日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pandas 提取数字_经验轻松提取Meta原始文献特征

發(fā)布時(shí)間:2025/4/5 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas 提取数字_经验轻松提取Meta原始文献特征 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

經(jīng)驗(yàn)|輕松提取Meta原始文獻(xiàn)特征

Python 辦公小助手:讀取 PDF 中表格并重命名

日常工作中,我們或多或少都會(huì)接觸到 Excel 表格、Word 文檔和 PDF 文件。偶爾來個(gè)處理文件的任務(wù),幾個(gè)快捷鍵操作一下——搞定!但是,偏偏有些煩人的工作,操作繁瑣且數(shù)據(jù)復(fù)雜,更要命的是耗時(shí)間,吭哧吭哧一下午卻難出幾個(gè)成果。

此時(shí)如果我們掌握些 Python 編程的技巧,整理下文件處理的流程通過編碼來實(shí)現(xiàn),不僅省時(shí)省力省心,還可以精進(jìn)編碼技術(shù)。今天我們就通過一個(gè) PDF 處理的實(shí)例來演示下 Python 助力辦公的過程。

上周朋友提了個(gè) PDF 處理的問題,要求如下:

大致整理下,這問題和把大象裝冰箱一樣要分三步:

  • 讀取 PDF 中的表格內(nèi)容

  • 在表格內(nèi)容中提取特定數(shù)據(jù)

  • 以特定數(shù)據(jù)對(duì)文件重命名

  • 此時(shí)面向 Python 默默許愿:要是 Python 中有現(xiàn)成的模塊可以直接讀取 PDF 中的表格就好了!

    心愿達(dá)成!確實(shí)有個(gè) tabula 模塊可以直接解析 PDF 中的表格:

    tabula-py?is?a?simple?Python?wrapper?of?tabula-java,?which?can?read?table?of?PDF.? You?can?read?tables?from?PDF?and?convert?into?pandas's?DataFrame.? tabula-py?also?enables?you?to?convert?a?PDF?file?into?CSV/TSV/JSON?file.

    https://pypi.org/project/tabula-py/

    如上所述, tabula-py 是 tabula-java 的一個(gè)封裝模塊,可以將 PDF 中的表格數(shù)據(jù)轉(zhuǎn)化為 pandas 的 DataFrame 格式。

    注意,安裝?tabula-py 時(shí)命令是?pip install tabula-py,但導(dǎo)入時(shí)是 import tabula。

    此外,該模塊由于是對(duì) tabula-java 的封裝依賴 java,需要安裝 java 才能正常調(diào)用。并且由最終轉(zhuǎn)化得到的數(shù)據(jù)格式也可以看出,此模塊也依賴 pandas 和 numpy,需要自行導(dǎo)入。

    詳細(xì)鏈接:https://pypi.org/project/tabula-py/

    安裝好 tabula-py,我們也準(zhǔn)備一份 PDF 文件(demo.pdf)用于演示代碼:

    現(xiàn)在任務(wù)更清晰了:讀取 demo.pdf 文件中的 “批號(hào)(款號(hào))”數(shù)據(jù):

    "批號(hào)(款號(hào))":"DRDY173131441HHDKD?QWOEP23"

    最終將這一串批號(hào)數(shù)據(jù)當(dāng)作名字給 PDF 重命名,生成 DRDY...EP23.pdf 文件。


    如果你能堅(jiān)持看到這里,我準(zhǔn)備向你推薦下 jupyter notebook。因?yàn)樗梢园创a塊執(zhí)行,上下代碼塊之間變量可以共用,同時(shí)會(huì)直接顯示代碼塊運(yùn)行結(jié)果。拿它用來做代碼及運(yùn)行結(jié)果展示非常好用——下文記錄的過程就是通過它運(yùn)行代碼截圖所得。

    1. 首先,導(dǎo)入 tabula,使用其函數(shù)讀取 PDF 中的表格數(shù)據(jù):

    由所得結(jié)果大致可以看出,我們想要的批號(hào)數(shù)據(jù)是在第二列。

    2. 之前提到讀到的 PDF 表格數(shù)據(jù)是 DataFrame 格式,可以用 help 函數(shù)確認(rèn)下:

    3. 由表格數(shù)據(jù)中提取其每一列的名稱:

    4. 根據(jù)目測分析,批號(hào)位于第二列,所以提取第二列名字:

    5. 通過 DataFrame["列名稱"]?來定位到該列具體數(shù)據(jù):

    6. 通過 for 循環(huán)逐一打印此列數(shù)據(jù),提取其中“批號(hào)”數(shù)據(jù):

    這里直接采用的是?"批號(hào)" in 字符串?的語法,倘若數(shù)據(jù)字符串中含有“批號(hào)”二字就會(huì)被篩選出,最終我們也如愿拿到了“批號(hào)數(shù)據(jù)”并賦值給 target 變量。

    7. 拿到了“批號(hào)”數(shù)據(jù),我們只選取字母數(shù)字拼接的數(shù)據(jù)串。接下來采用正則表達(dá)式,按照批號(hào)數(shù)據(jù)格式中只包含大寫字母、數(shù)字以及中間會(huì)夾雜空格,制定匹配模式進(jìn)行匹配提取:

    最終我們拿到了批號(hào)數(shù)據(jù)串賦值給 result 變量。

    8. 最終我們利用 os 模塊將文件夾內(nèi)的?“demo.pdf”?重命名為 result 所代表的批號(hào)數(shù)據(jù)串.pdf :

    注意,這里的 f"{變量}字符串內(nèi)容" 是格式化字符串的形式。

    至此,我們完成了對(duì)單份 PDF 處理的完整流程。接下來我們可以多試幾份不同 PDF 尋找共同的提取批號(hào)數(shù)據(jù)的規(guī)律,將其整理成連貫、簡潔的最終版代碼:

    #!/usr/bin/env python# encoding: utf-8# @Time : 2019-10-24 21:39__author__ = 'Ted'import tabulaimport reimport os# 將提取單一 PDF 文件內(nèi)批號(hào)數(shù)據(jù)的過程定義成 get_target("pdf名稱") 函數(shù),最終函數(shù)將數(shù)據(jù)返回def get_target(filename): df = tabula.read_pdf(filename) pattern = r'[A-Z0-9]+[\s]*[A-Z0-9]*' for item_sub in df[df.columns[1]]: if "批號(hào)" in str(item_sub): result = re.search(pattern,item_sub).group() return result return Falseif __name__=="__main__": # 獲取 PDF 所在文件夾 folder = "test" # os 模塊定位到該文件夾 os.chdir(folder) # 獲取文件夾內(nèi)文件列表 pdflist = os.listdir() # 打印該文件列表 print(pdflist) # 對(duì)文件列表 for 循環(huán)處理 for item in pdflist: # 如果該文件名稱最后四位是 .pdf 或 .PDF,即我們要找的 PDF 文件 if item[-4:] in [".pdf",".PDF"] : # 對(duì)該文件進(jìn)行提取批號(hào)函數(shù)操作,將批號(hào)數(shù)據(jù)賦值給 new_name new_name = get_target(item) # 如果不為空,即獲取到了批號(hào)數(shù)據(jù) if new_name: # 對(duì)文件進(jìn)行重命名操作 os.rename(item,f"{new_name}.pdf") print("重命名成功!")

    如果我們有大量 PDF 文件都要提取文件內(nèi)的批號(hào)數(shù)據(jù)進(jìn)行重命名,可以將其放到同一個(gè)文件夾中,然后只要在最終代碼中修改 folder =?"文件夾名稱",運(yùn)行代碼等待幾秒,便可微微一笑任務(wù)搞定了。

    以上,感謝閱讀~

    歡迎咨詢小編微信:ZGYJT84628858

    添加小編微信? ?開啟您的科研之路

    平臺(tái)推出以下服務(wù),歡迎小伙伴們咨詢~

    職稱論文發(fā)表|普刊|核心期刊|SCI|畢業(yè)論文|科研課題寫作|專利協(xié)助申請(qǐng)|專著出版|

    總結(jié)

    以上是生活随笔為你收集整理的pandas 提取数字_经验轻松提取Meta原始文献特征的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。