Python使用docx模塊編輯Word文檔
前言
該模塊可以通過(guò)python代碼來(lái)對(duì)word文檔進(jìn)行大批量的編輯。docx它提供了一組功能豐富的函數(shù)和方法,用于創(chuàng)建、修改和讀取Word文檔。下面是docx
模塊中一些常用的函數(shù)和方法的介紹:
安裝:
pip install docx
一、準(zhǔn)備一個(gè)word文檔
文檔內(nèi)容大致如下
二、讀取文檔中的內(nèi)容
1、讀取段落內(nèi)容
通過(guò)遍歷 doc.paragraphs 來(lái)獲取文檔中的每個(gè)段落的文本內(nèi)容。
from docx import Document path = 'test.docx' #word文檔路徑 doc = Document(path) #創(chuàng)建一個(gè)文檔對(duì)象 #遍歷文檔中的所有段落 for par in doc.paragraphs: text = par.text print(text)
輸出的結(jié)果如下:
2、讀取表格內(nèi)容
from docx import Document path = 'test.docx' #word文檔路徑 doc = Document(path) #創(chuàng)建一個(gè)文檔對(duì)象 # 遍歷文檔中的表格 for table in doc.tables: for row in table.rows: for cell in row.cells: text = cell.text print(text)
輸出的結(jié)果如下:
三、修改
修改內(nèi)容需要注意,需要配合document.save(file_path):將文檔保存到指定的文件路徑file_path。
1、修改文檔內(nèi)容
比如把文檔中的 “所有的123” 替換成 “好好學(xué)習(xí)”
from docx import Document path = 'test.docx' #word文檔路徑 doc = Document(path) #創(chuàng)建一個(gè)文檔對(duì)象 # 遍歷文檔中的所有段落 for par in doc.paragraphs: text = par.text if '123' in par.text: par.text = par.text.replace('123','好好學(xué)習(xí)!') #凡是有保存功能的,需要先把原文檔關(guān)閉才可以編輯 doc.save(path) #注意這里如果使用的原文檔的路徑,則會(huì)直接對(duì)原文檔的內(nèi)容進(jìn)行修改, new_path = 'new_test.docx' #創(chuàng)建一個(gè)新路徑 doc.save(new_path) #這里則會(huì)把內(nèi)容保存到一個(gè)新文檔中
輸出結(jié)果:
因?yàn)槲疫@里保存了兩個(gè)路徑:
1、可以看到這里新生成了一個(gè)word文檔
2、查看兩個(gè)文檔中的內(nèi)容
原文檔:
新生成文檔:
總結(jié):
1、思路:
先定位修改的內(nèi)容——>然后賦值——>保存(沒(méi)有修改的內(nèi)容都會(huì)原樣保存下來(lái))
2、運(yùn)行修改的功能時(shí)候需要把原文檔關(guān)閉;
3、如果不生成新的文檔則切記,修改內(nèi)容不可逆!??!
2、修改表格內(nèi)容
把表格中的 “休息” 替換成 “預(yù)習(xí)”
這里可以多復(fù)制幾張表格
按照上面的思路來(lái):
1、先定位,找到修改目標(biāo)的坐標(biāo)
from docx import Document path = 'test.docx' #word文檔路徑 doc = Document(path) #創(chuàng)建一個(gè)文檔對(duì)象 tables = doc.tables #獲取表格中所有內(nèi)容對(duì)應(yīng)的坐標(biāo) for i, row in enumerate(tables[0].rows): for j, cell in enumerate(row.cells): print( f'[+]{cell.text} [+]對(duì)應(yīng)的坐標(biāo)是 ({i}, {j})\n')
輸出結(jié)果:
這里注意(這里找坐標(biāo)和我們平時(shí)看表的習(xí)慣不一樣,他們并沒(méi)有邏輯上的關(guān)系,而只是單純的坐標(biāo)來(lái)對(duì)應(yīng))
2、記住這個(gè)坐標(biāo)我們后面就可以對(duì)所有的表進(jìn)行修改:
注意下面代碼中的 cell(2,1) 中的坐標(biāo)就是上面我們找到的坐標(biāo),通過(guò)tables[tab]是逐一遍歷出每一張表格,然后把對(duì)應(yīng)的坐標(biāo)文檔替換為 '預(yù)習(xí)'.
from docx import Document path = 'test.docx' #word文檔路徑 doc = Document(path) #創(chuàng)建一個(gè)文檔對(duì)象 tables = doc.tables #這里已經(jīng)把文檔中的所有表格都取出來(lái)了,以列表的形式存儲(chǔ) #獲取表格中所有內(nèi)容對(duì)應(yīng)的坐標(biāo) for tab in range(len(tables)): tables[tab].cell(2,1).text='預(yù)習(xí)' # #凡是有保存功能的,需要先把原文檔關(guān)閉才可以編輯 doc.save(path) #注意這里如果使用的原文檔的路徑,則會(huì)直接對(duì)原文檔的內(nèi)容進(jìn)行修改,
輸出結(jié)果:
到此這篇關(guān)于Python使用docx模塊編輯Word文檔的文章就介紹到這了,更多相關(guān)Python docx編輯Word內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Django框架中用context來(lái)解析模板的方法
這篇文章主要介紹了詳解Django框架中用context來(lái)解析模板的方法,Django是重多高人氣Python框架中最為著名的一個(gè),需要的朋友可以參考下2015-07-07Python預(yù)測(cè)分詞的實(shí)現(xiàn)
本文將結(jié)合實(shí)例代碼,介紹Python預(yù)測(cè)分詞的實(shí)現(xiàn),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06Python+Tkinter打造簽名設(shè)計(jì)工具
這篇文章主要為大家分享如何利用Python Tkinter庫(kù)制作帶圖形界面的一個(gè)簽名設(shè)計(jì)工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-04-04Python數(shù)據(jù)可視化編程通過(guò)Matplotlib創(chuàng)建散點(diǎn)圖代碼示例
這篇文章主要介紹了Python數(shù)據(jù)可視化編程通過(guò)Matplotlib創(chuàng)建散點(diǎn)圖實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12Python基礎(chǔ)學(xué)習(xí)之模塊的安裝和卸載
其實(shí)現(xiàn)在還是有很多剛開(kāi)始學(xué)習(xí)的小伙伴,會(huì)遇到模塊不會(huì)安裝的情況,或者一遇到報(bào)錯(cuò)就懵了,這樣就很耽誤我們的學(xué)習(xí)進(jìn)度。所以,今天我們就來(lái)了解一下Python幾種安裝模塊的方法吧2022-09-09