天天看點

python批量提取word指定内容_[Python] 自動化辦公 将ppt内的文字提取至word中

轉載請注明:陳熹 [email protected] (簡書号:半為花間酒)

若公衆号内轉載請聯系公衆号:早起Python

本例可以學到的知識點: python-pptx和python-docx互動操作word和ppt檔案

今天将會學習一個實用辦公小技巧:将文字從ppt中提取出來并寫入word

一、需求描述:

python批量提取word指定内容_[Python] 自動化辦公 将ppt内的文字提取至word中

有一份如圖所示的ppt,包含了Python的介紹。現在需要将ppt中的文字都提取出來并寫入word中,如下圖:

python批量提取word指定内容_[Python] 自動化辦公 将ppt内的文字提取至word中

二、涉及知識

代碼實際上非常簡單,基于python-pptx和python-docx兩個子產品即可,核心代碼隻有6行

但需要先熟悉ppt和word兩種檔案的格式,可通過下面的圖解對word結構有個直覺認識

python批量提取word指定内容_[Python] 自動化辦公 将ppt内的文字提取至word中

不考慮表格圖檔等情況,一個純文字組成的word文檔由文檔 document - 段落 paragraph - 文字塊 run三級結構組成

再看一下ppt結構組成,會較word複雜許多。當然這也跟ppt的高度自定義拓展性有關

python批量提取word指定内容_[Python] 自動化辦公 将ppt内的文字提取至word中

簡單來說,一個PPT檔案為presentation,基本的結構為展示檔案 presentation - 幻燈片頁 slide - 形狀 shape組成,形狀就需要區分開,是包含文本的形狀還是不包含文本的形狀(純圖檔等)。如果是包含文本的形狀,則可以擷取内部的文本框,一個文本框又可以看作是一個小的word文檔,包含段落 paragraph - 文字塊 run

有了以上的知識鋪墊就可以寫代碼了

三、代碼實作

導入需要的子產品

from pptx import Presentation

from docx import Document

注意,安裝的時候是python-docx和python-pptx,但實際運用都是pptx和docx

兩個子產品的相似點:

安裝名和導入名不同

安裝名為 python-新版本字尾名 導入名為新版本字尾名

導入pptx檔案,建立word檔案

wordfile = Document()

# 給定ppt檔案所在的路徑

filepath = r'xxxxxxxx'

pptx = Presentation(filepath)

周遊ppt,将文字寫入word

# 周遊ppt檔案的所有幻燈片頁

for slide in pptx.slides:

# 周遊幻燈片頁的所有形狀

for shape in slide.shapes:

# 判斷形狀是否含有文本框,如果含有則順序運作代碼

if shape.has_text_frame:

# 擷取文本框

text_frame = shape.text_frame

# 周遊文本框中的所有段落

for paragraph in text_frame.paragraphs:

# 将文本框中的段落文字寫入word中

wordfile.add_paragraph(paragraph.text)

周遊ppt到段落就寫入word,而非周遊到底直到文字塊才寫入,因為段落更符合閱讀習慣,一般周遊到文字塊是需要對特定的字段詞塊進行操作才進行

最後記得儲存word檔案

save_path = r'xxxxxxxx'

wordfile.save(save_path)