歡迎您光臨本站 註冊首頁

python3用PyPDF2解析pdf文件,用正則匹配數據方式

←手機掃碼閱讀     retouched @ 2020-05-13 , reply:0

我就廢話不多說了,大家還是看代碼吧!
import PyPDF2 import re pdf_file = open('xxx.pdf', mode='rb') read_pdf = PyPDF2.PdfFileReader(pdf_file) # 獲取pdf文件的所有頁數 number_of_pages = read_pdf.getNumPages() # print('total_page: ', number_of_pages) line_list = [] # 循環遍歷每一頁 for i in range(0, number_of_pages): # 讀取每一頁的內容 page = read_pdf.getPage(i) page_content = page.extractText() # 將這一頁的內容分割為列表,,並相加所有的頁面內容 line_list += page_content.split() # 關閉pdf文件 pdf_file.close() line_buf = '' for buf in line_list: line_buf = line_buf+' '+buf # 匹配數據:第一列和第二列 如: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()
補充知識:Logger logger = Logger.getLogger(Class clazz)獲取不得的問題
因為有多個同名的Logger類,在測試的時候沒注意就直接選了第一個,發現不能用,以為是JAR包的問題,重新導一遍也不能,配置文件檢查過也不行,最後發現是類用錯了。
要打印日誌用的是log4j包裡的Logger類


[retouched ] python3用PyPDF2解析pdf文件,用正則匹配數據方式已經有236次圍觀

http://coctec.com/docs/python/shhow-post-234319.html