python3用PyPDF2解析pdf文件,用正則匹配數(shù)據(jù)方式
我就廢話不多說(shuō)了,大家還是看代碼吧!
import PyPDF2 import re pdf_file = open('xxx.pdf', mode='rb') read_pdf = PyPDF2.PdfFileReader(pdf_file) # 獲取pdf文件的所有頁(yè)數(shù) number_of_pages = read_pdf.getNumPages() # print('total_page: ', number_of_pages) line_list = [] # 循環(huán)遍歷每一頁(yè) for i in range(0, number_of_pages): # 讀取每一頁(yè)的內(nèi)容 page = read_pdf.getPage(i) page_content = page.extractText() # 將這一頁(yè)的內(nèi)容分割為列表,,并相加所有的頁(yè)面內(nèi)容 line_list += page_content.split() # 關(guān)閉pdf文件 pdf_file.close() line_buf = '' for buf in line_list: line_buf = line_buf+' '+buf # 匹配數(shù)據(jù):第一列和第二列 如:000069.sz 和 100 # print(line_buf) a = re.findall('([0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+.[a-z]+[a-z])', line_buf) b = re.findall('[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+.[a-z]+[a-z].([0-9,]+)', line_buf) # print(b) for i in range(0, len(a)): a[i] = a[i].upper() for i in range(0, len(b)): b[i] = int(b[i].replace(',', '')) # print(b) # 組成字典 results = dict(zip(a, b))
正則的其他用法:
fp = open(filename,"w") fp.write(re.search('(StockDescription:)([a-zA-Z]+-[a-zA-Z]+)',line_buf).group(2) +',') fp.write(time.strftime('%Y%m%d',time.strptime(re.search('(TradeDate:)([0-9]+[a-zA-Z]+[0-9]+)',line_buf).group(2),'%d%B%Y')) +',') fp.write(re.search('(Price:[A-Z]+)([0-9.,]+)',line_buf).group(2).replace(',','')+',') fp.close()
補(bǔ)充知識(shí):Logger logger = Logger.getLogger(Class clazz)獲取不得的問(wèn)題
因?yàn)橛卸鄠€(gè)同名的Logger類,在測(cè)試的時(shí)候沒注意就直接選了第一個(gè),發(fā)現(xiàn)不能用,以為是JAR包的問(wèn)題,重新導(dǎo)一遍也不能,配置文件檢查過(guò)也不行,最后發(fā)現(xiàn)是類用錯(cuò)了。
要打印日志用的是log4j包里的Logger類
以上這篇python3用PyPDF2解析pdf文件,用正則匹配數(shù)據(jù)方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用ClickHouse的實(shí)踐與踩坑記錄
這篇文章主要介紹了Python使用ClickHouse的實(shí)踐與踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05python檢測(cè)遠(yuǎn)程udp端口是否打開的方法
這篇文章主要介紹了python檢測(cè)遠(yuǎn)程udp端口是否打開的方法,涉及Python操作socket實(shí)現(xiàn)檢測(cè)udp端口的技巧,需要的朋友可以參考下2015-03-03Python網(wǎng)絡(luò)爬蟲之Web網(wǎng)頁(yè)基礎(chǔ)
我們?cè)趯W(xué)習(xí)爬蟲之前,要先了解網(wǎng)頁(yè)的組成,只有我們了解其組成嗎,才可以方能百戰(zhàn)百勝,文章中有詳細(xì)的代碼示例,需要的朋友可以參考一下2023-04-04Python常用數(shù)據(jù)結(jié)構(gòu)和公共方法技巧總結(jié)
這篇文章主要介紹了Python常用數(shù)據(jù)結(jié)構(gòu)和公共方法技巧總結(jié),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08Python pandas入門系列之眾數(shù)和分位數(shù)
分位數(shù)(Quantile),也稱分位點(diǎn),是指將一個(gè)隨機(jī)變量的概率分布范圍分為幾個(gè)等份的數(shù)值點(diǎn),分析其數(shù)據(jù)變量的趨勢(shì),而眾數(shù)(Mode)是代表數(shù)據(jù)的一般水平,這篇文章主要給大家介紹了Python pandas系列之眾數(shù)和分位數(shù)的相關(guān)資料,需要的朋友可以參考下2021-08-08tensorboard實(shí)現(xiàn)同時(shí)顯示訓(xùn)練曲線和測(cè)試曲線
今天小編就為大家分享一篇tensorboard實(shí)現(xiàn)同時(shí)顯示訓(xùn)練曲線和測(cè)試曲線,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01Django中select_related和prefetch_related的用法與區(qū)別詳解
在實(shí)際的開發(fā)中,模型之間經(jīng)常存在復(fù)雜的關(guān)聯(lián)關(guān)系,下面這篇文章主要給大家介紹了關(guān)于Django中select_related和prefetch_related的用法與區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-11-11