利用pdfplumber處理滴滴電子發票

2021-09-28 01:52:07 字數 2648 閱讀 1793

每次滴滴打車,回來以後發票處理都挺麻煩。特別是出長差回來,有時候幾十張發票,每一張都要與行程單對在一起,列印出來交給財務。

import pdfplumber

import os

import shutil

# 要用到pdfplumber

# os主要用於獲取pdf的檔名

# shutil主要用於copy原pdf檔案,到新的檔名

# 首先獲取所有檔名

file_list = os.listdir(

)# 建立乙個空的「報銷單」檔名list

bxd_filename_list =

pre_bxd =

'滴滴出行行程報銷單'

pre_fp =

'滴滴電子發票'

# 獲得所有的報銷單列表

for fname in file_list:

if'.pdf'

in fname and pre_bxd in fname:

下面讀取報銷單裡面的資訊,包括日期 + 城市 + 出發地點

# 遍歷報銷單列表

for bxd_filename in bxd_filename_list:

# 獲得報銷單的字尾部分,即'滴滴出行行程報銷單'之後的所有編號、副檔名等

# 這樣不管原來的檔名後面是什麼樣子的,

# 只要編號一樣的報銷單和發票就有了相同的名字。

ex_name = bxd_filename[

len(pre_bxd):]

with pdfplumber.

open

(bxd_filename)

as pdf:

# 獲得檔案的第一頁

page = pdf.pages[0]

# 獲得表單

table = page.extract_tables(

)# 獲得日期 + 城市 + 出發地點

f_rename = table[0]

[1][

2].split(

' ')[0

]+' '+table[0]

[1][

3]+' '

+table[0]

[1][

4]# 根據獲得的日期、出發點,重新命名檔案

shutil.copyfile(bxd_filename, f_rename+pre_bxd+

'.pdf'

) fp_filename = pre_fp + ex_name

shutil.copyfile(fp_filename, f_rename+pre_fp+

'.pdf'

)

這樣一來便獲得了整齊的重新命名以後的發票和報銷單檔名。

最大的好處,是在電腦中可以存放大量的電子發票,直接用everything檢索、以後填寫報銷非常方便。一眼就知道哪些報銷了,哪些還沒有填報。

效果如下

全部的**如下:

import pdfplumber

import os

import shutil

file_list = os.listdir(

)bxd_filename_list =

pre_bxd =

'滴滴出行行程報銷單'

pre_fp =

'滴滴電子發票'

# 獲得所有的報銷單列表

for fname in file_list:

if'.pdf'

in fname and pre_bxd in fname:

# 遍歷報銷單列表

for bxd_filename in bxd_filename_list:

# 獲得報銷單的字尾部分,即'滴滴出行行程報銷單'之後的所有編號、副檔名等

ex_name = bxd_filename[

len(pre_bxd):]

with pdfplumber.

open

(bxd_filename)

as pdf:

# 獲得檔案的第一頁

page = pdf.pages[0]

# 獲得表單

table = page.extract_tables(

)# 獲得日期 + 出發地點

f_rename = table[0]

[1][

2].split(

' ')[0

]+' '+table[0]

[1][

3]+' '

+table[0]

[1][

4]# 根據獲得的日期、出發點,重新命名檔案

shutil.copyfile(bxd_filename, f_rename+pre_bxd+

'.pdf'

) fp_filename = pre_fp + ex_name

shutil.copyfile(fp_filename, f_rename+pre_fp+

'.pdf'

)

利用CPU多核處理

在mysql5.5.x後,可以利用innodb read io threads和innodb write io threads,取代之前的innodb file io threads引數,在linux平台上就可以根據cpu核數來更改相應的引數值,預設是4.比如cpu是2棵8核的,可以設定 innod...

利用Excel VBA處理文件

遇到如下格式的一篇word文件,格式混亂,不適合列印 由於沒有接觸過word vba,因此決定用excel vba來處理這篇文件。首先全選該文件的內容,貼上到excel文件中。然後建立乙個新的macro,修改該macro為以下 sub formatsheet formatsheet macro ma...

每日一滴(實踐) NLP之處理停用詞

顧名思義,沒用的單詞,也叫停止詞 即,執行資訊檢索任務或其他自然語言任務時需要過濾掉的詞 例如 to is the 這些詞對句子整體的理解沒多大作用,考慮到處理效率,則需要在處理資料前將這些詞去掉 這也是資料標準化中的一步 即將待處理文字中的停用詞去掉。from nltk.corpus import...