python3用PyPDF2解析pdf文件,用正則匹配數(shù)據(jù)方式
我就廢話不多說了,大家還是看代碼吧!
import PyPDF2
import re
pdf_file = open('xxx.pdf', mode='rb')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
# 獲取pdf文件的所有頁數(shù)
number_of_pages = read_pdf.getNumPages()
# print('total_page: ', number_of_pages)
line_list = []
# 循環(huán)遍歷每一頁
for i in range(0, number_of_pages):
# 讀取每一頁的內(nèi)容
page = read_pdf.getPage(i)
page_content = page.extractText()
# 將這一頁的內(nèi)容分割為列表,,并相加所有的頁面內(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)獲取不得的問題
因?yàn)橛卸鄠€(gè)同名的Logger類,在測試的時(shí)候沒注意就直接選了第一個(gè),發(fā)現(xiàn)不能用,以為是JAR包的問題,重新導(dǎo)一遍也不能,配置文件檢查過也不行,最后發(fā)現(xiàn)是類用錯(cuò)了。

要打印日志用的是log4j包里的Logger類
以上這篇python3用PyPDF2解析pdf文件,用正則匹配數(shù)據(jù)方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解sklearn?Preprocessing?數(shù)據(jù)預(yù)處理功能
這篇文章主要介紹了sklearn?Preprocessing?數(shù)據(jù)預(yù)處理功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
使用python tkinter實(shí)現(xiàn)各種個(gè)樣的撩妹鼠標(biāo)拖尾效果
這篇文章主要介紹了使用python tkinter實(shí)現(xiàn)各種個(gè)樣的撩妹鼠標(biāo)拖尾效果,本文通過實(shí)例代碼,給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
Python基于最小二乘法實(shí)現(xiàn)曲線擬合示例
這篇文章主要介紹了Python基于最小二乘法實(shí)現(xiàn)曲線擬合,涉及Python基于numpy及scipy庫進(jìn)行曲線擬合操作相關(guān)運(yùn)算技巧,需要的朋友可以參考下2018-06-06
解決pyinstaller打包exe文件出現(xiàn)命令窗口一閃而過的問題
今天小編就為大家分享一篇解決pyinstaller打包exe文件出現(xiàn)命令窗口一閃而過的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python設(shè)計(jì)模式結(jié)構(gòu)型享元模式
這篇文章主要介紹了Python享元模式,享元模式即Flyweight Pattern,指運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象,下面和小編一起進(jìn)入文章了解更多詳細(xì)內(nèi)容吧2022-02-02
Python實(shí)現(xiàn)滑動(dòng)平均(Moving Average)的例子
今天小編就為大家分享一篇Python實(shí)現(xiàn)滑動(dòng)平均(Moving Average)的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python FastAPI 多參數(shù)傳遞的示例詳解
這篇文章主要介紹了Python FastAPI 多參數(shù)傳遞,FastAPI通過模板來匹配URL中的參數(shù)列表,大概分為三類方式傳遞參數(shù),每種方式結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
基于jupyter代碼無法在pycharm中運(yùn)行的解決方法
這篇文章主要介紹了基于jupyter代碼無法在pycharm中運(yùn)行的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04

