python使用python-docx處理word的方法示例
一、python-docx簡(jiǎn)介
python自動(dòng)化操作Word最常用的模塊就是python-docx。
python-docx模塊處理word文檔,處理方式是面向?qū)ο蟮?。也就是說(shuō)python-docx模塊會(huì)把word文檔,文檔中的段落、文本、字體等都看做對(duì)象,對(duì)對(duì)象進(jìn)行處理就是對(duì)word文檔的內(nèi)容處理。
如果需要讀取word文檔中的文字(一般來(lái)說(shuō),程序也只需要認(rèn)識(shí)word文檔中的文字信息),需要先了解python-docx模塊的幾個(gè)概念。
Word文檔一般可以結(jié)構(gòu)化成三個(gè)部分:
- Document,表示一個(gè)word文檔
- Paragraph,表示word文檔中的一個(gè)段落
- Run,表示段落中的文字塊
Document - Paragraph - Run
三級(jí)結(jié)構(gòu),這是最普遍的情況。但是如果Word中存在表格,這時(shí)會(huì)有新的文檔結(jié)構(gòu),如下:
這時(shí)的結(jié)構(gòu)非常類似Excel, 可以看成Document-Table-Row/Column-Cells
四級(jí)結(jié)構(gòu)。
# 安裝 pip install python-docx
二、基本使用
1、新建與保存word
from docx import Document document = Document() #創(chuàng)建一個(gè)空文檔 document.save(r'D:\自動(dòng)化\word\道德經(jīng).docx') # 保存文件
2、寫(xiě)入Word
from docx import Document # 導(dǎo)入docx庫(kù) from docx.shared import Inches, Cm # 導(dǎo)入英寸單位 厘米Cm (可用于指定圖片大小、表格寬高等) # 打開(kāi)一個(gè)document file_path = r'D:\自動(dòng)化\word\道德經(jīng).docx' document = Document(file_path) # 設(shè)置標(biāo)題段落 document.add_heading('道德經(jīng)', 0) # 添加段落 p = document.add_paragraph('道可道,非常道;名可名,非常名。') p.add_run('無(wú)名,天地之始,').bold = True # 在指定段落后添加粗體文字 p.add_run('有名,') # 在指定段落后添加默認(rèn)格式文字 p.add_run('萬(wàn)物之母。').italic = True # 在指定段落后添加斜體文字 # 添加1級(jí)標(biāo)題=標(biāo)題1 document.add_heading('故常無(wú)欲,', level=1) # 添加指定格式段落 style后面則是樣式 document.add_paragraph('以觀其妙,', style='Intense Quote') # 添加段落,樣式為L(zhǎng)ist Bullet類型 document.add_paragraph('常有欲,以觀其徼。', style='List Bullet') # 添加段落,樣式為L(zhǎng)ist Number類型 document.add_paragraph('此兩者,同出而異名,同謂之玄,玄之又玄,眾妙之門(mén)。', style='ListNumber') document.add_paragraph('所以說(shuō),霸夫老師教Python,教得妙。', style='List Number') # 添加圖片 img_path = r'D:\自動(dòng)化\word\girl.png' document.add_picture(img_path) document.add_picture(img_path, width=Inches(1.25)) document.add_picture(img_path, width=Cm(5), height=Cm(5)) # 待添加到表格的內(nèi)容 records = ( (1, '李白', '詩(shī)仙'), (2, '杜甫', '詩(shī)圣'), (3, '白居易', '香山居士, 與元稹并稱元白, 與劉禹錫合稱劉白') ) # 添加一個(gè)1行3列的表格, 表格樣式為T(mén)able Grid # 表格樣式參數(shù)可選,缺省時(shí)為Normal Table # Normal Table # Table Grid # Light Shading、 Light Shading Accent 1 至 Light Shading Accent 6 # Light List、Light List Accent 1 至 Light List Accent 6 # Light Grid、Light Grid Accent 1 至 Light Grid Accent 6 # 太多了其它省略... table = document.add_table(rows=1, cols=3, style='Table Grid') # 填充標(biāo)題行 hdr_cells = table.rows[0].cells hdr_cells[0].text = '序號(hào)' hdr_cells[1].text = '姓名' hdr_cells[2].text = '描述' # 動(dòng)態(tài)添加數(shù)據(jù)行 for id, name, desc in records: row_cells = table.add_row().cells row_cells[0].text = str(id) row_cells[1].text = name row_cells[2].text = desc document.add_paragraph('再添加一個(gè)表格') # 待添加到表格的內(nèi)容 records2 = [ ["姓名", "性別", "家庭地址"], ["貂蟬", "女", "河北省"], ["楊貴妃", "女", "貴州省"], ["西施", "女", "山東省"] ] # 添加一個(gè)4行3列的表格 table2 = document.add_table(rows=4, cols=3, style='Light List Accent 5') # 填充表格 for 行索引 in range(4): cells = table2.rows[行索引].cells for 列索引 in range(3): cells[列索引].text = str(records2[行索引][列索引]) # 添加分頁(yè)符 document.add_page_break() # 保存文檔 document.save(file_path)
(1)打開(kāi)文檔
Document()傳入?yún)?shù)是打開(kāi)相應(yīng)的文檔,不傳參數(shù)則是創(chuàng)建一個(gè)空文檔。
# 創(chuàng)建一個(gè)空文檔 document = Document() # 加載舊文檔(用于修改或添加內(nèi)容) document = Document('exist.docx')
(2)添加標(biāo)題
level等級(jí)1-9 也就是標(biāo)題1-標(biāo)題9,我們可以在舊文檔中將標(biāo)題格式設(shè)置好,使用Python-docx打開(kāi)舊文檔,再添加相應(yīng)等級(jí)標(biāo)題即可。
document.add_heading('一級(jí)標(biāo)題', level=1)
(3)添加段落
段落在 Word 中是基本內(nèi)容。它們用于正文文本,也用于標(biāo)題和項(xiàng)目列表(如項(xiàng)目符號(hào))。
添加段落的時(shí)候,賦值給一個(gè)變量,方便我們后面進(jìn)行格式調(diào)整。
p = document.add_paragraph('道可道,非常道;名可名,非常名。') # 添加指定格式段落 style后面則是樣式 document.add_paragraph('以觀其妙,', style='Intense Quote')
(4)添加文字塊
在指定段落上添加文字塊。
p.add_run('無(wú)名,天地之始,').bold = True # 在指定段落后添加粗體文字 p.add_run('有名,') # 在指定段落后添加默認(rèn)格式文字 p.add_run('萬(wàn)物之母。').italic = True # 在指定段落后添加斜體文字
(5)添加圖片
width, height可用于設(shè)置圖片尺寸,缺省時(shí)為圖片默認(rèn)大小。
document.add_picture('girl.png') document.add_picture('girl.png', width=Inches(1.25)) document.add_picture('girl.png', width=Cm(5), height=Cm(5))
(6)添加表格
表格樣式style參數(shù)可選,缺省時(shí)默認(rèn)為Normal Table。
常用樣式有:
Normal Table
Table Grid
Light Shading、 Light Shading Accent 1 至 Light Shading Accent 6
Light List、Light List Accent 1 至 Light List Accent 6
Light Grid、Light Grid Accent 1 至 Light Grid Accent 6
# 添加一個(gè)4行3列的表格 table = document.add_table(rows=4, cols=3) table = document.add_table(rows=4, cols=3, style='Light Shading Accent 2')
(7)添加分頁(yè)符
# 添加分頁(yè)符 document.add_page_break()
3、讀取word
''' 文檔.paragraphs可以獲取文檔中所有段落數(shù)據(jù),不包含表格,這里注意一點(diǎn)圖片跟分頁(yè)符也會(huì)計(jì)算在段落數(shù)據(jù)內(nèi) 段落.runs 可以獲取段落的所有文字塊 文檔.tables可以獲取文檔中所有表格數(shù)據(jù) 文檔.save (path) 可以用于保存修改后的文檔本身,同樣也可在將打開(kāi)的文檔另存為新文檔 ''' from docx import Document doc = Document(r'D:\自動(dòng)化\word\道德經(jīng).docx') # 讀取 word 中所有內(nèi)容 for p in doc.paragraphs: print(p, p.text) # 讀取指定段落中的所有run for run in doc.paragraphs[1].runs: print(run, run.text) # 讀取 word中所有表格內(nèi)容 for 表格 in doc.tables: print(表格) for 行 in 表格.rows: for 單元格 in 行.cells: print(單元格.text) doc.save(r'D:\自動(dòng)化\word\另存為新文檔.docx')
到此這篇關(guān)于python使用python-docx處理word的方法示例的文章就介紹到這了,更多相關(guān)python-docx處理word內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)QQ郵箱發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)QQ郵箱發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03Python入門(mén)教程(三十七)Python中的刪除文件
這篇文章主要介紹了Python入門(mén)教程(三十七)Python中的刪除文件,在Python中,如果需要?jiǎng)h除文件,必須導(dǎo)入OS模塊,使用os模塊的remove()方法,需要的朋友可以參考下2023-05-05盤(pán)點(diǎn)Python加密解密模塊hashlib的7種加密算法(推薦)
這篇文章主要介紹了盤(pán)點(diǎn)Python加密解密模塊hashlib的7種加密算法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04對(duì)Python 2.7 pandas 中的read_excel詳解
今天小編就為大家分享一篇對(duì)Python 2.7 pandas 中的read_excel詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Python實(shí)現(xiàn)列表刪除重復(fù)元素的三種常用方法分析
這篇文章主要介紹了Python實(shí)現(xiàn)列表刪除重復(fù)元素的三種常用方法,結(jié)合實(shí)例形式對(duì)比分析了Python針對(duì)列表元素的遍歷、判斷、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下2017-11-11python在linux系統(tǒng)下獲取系統(tǒng)內(nèi)存使用情況的方法
這篇文章主要介紹了python在linux系統(tǒng)下獲取系統(tǒng)內(nèi)存使用情況的方法,涉及Python在Linux平臺(tái)下獲取系統(tǒng)硬件信息的相關(guān)技巧,需要的朋友可以參考下2015-05-05