利用python批量處理Word文件——正文、標題


前面寫了如何處理word中的表格:利用python批量處理Word文件——表格 ,其實我覺得word正文應該很少用到批處理,不過萬一有朋友需要呢,我們要處理的文件內容千奇百怪,但我覺得難點其實是如何對我們想處理的內容進行讀寫,所以這篇博客的主要內容就是word文件的讀寫。我把word文件中的內容分為三類:一是表格;二是圖片;三是其它內容。表格和圖片的處理我在另外的博客中有詳細說明,這里主要談談word正文的讀寫。

在docx中,Word內容的(除表格、圖片)的基本組成是段落,因此word的所有內容都存儲在paragraphs中,paragraph有兩個屬性:一是text,二是style。text存儲段落的內容,style判斷段落的種類。

1.讀取Word內容
1.1讀取Word中的表格

利用python-docx批量處理Word文件——表格

1.2讀取Word中的圖片

利用python-docx批量處理Word文件—圖片

1.3讀取Word正文
from docx import Document
doc=Document("./a.docx")
for p in doc.paragraphs:
    print(p.text)

通過遍歷paragraphs就可以獲得word中全部內容,有時候我們並不需要讀取Word中的所有內容,我們可能只想要某些特殊的內容,比如標題,比如列表,那么docx可否實現呢,答案是肯定的。

1.3.1 讀取Word中的標題
  • 一級標題
for p in doc.paragraphs:
    if p.style.name=='Heading 1':
        print(p.text)
  • 二級標題
for p in doc.paragraphs:
    if p.style.name=='Heading 2':
        print(p.text)
  • 所有標題
import re
for p in doc.paragraphs:
    if re.match("^Heading \d+$",p.style.name):
        print(p.text)
1.3.2 讀取正文
for p in doc.paragraphs:
    if p.style.name=='Normal':
        print(p.text)
1.3.3 其它內容

從前面可以看出,如果知道不同內容的style.name,那么要讀這些內容是極其方便的,這些style.name可以通過以下方式得到:

from docx.enum.style import WD_STYLE_TYPE
for i in s:
    if i.type==WD_STYLE_TYPE.PARAGRAPH:
        print(i.name)
2.Word寫入數據
2.1 標題

寫入標題有兩種方法

doc.add_heading("heading 1",level=1)

or

doc.add_paragraph("heading 1",style='Heading 1')
2.2 正文
doc.add_paragraph("正文")
2.3 分頁符
doc.add_page_break()
2.5 其它

利用add_paragraph可以插入幾何所有內容,只指定對應的style即可。

至於寫入數據時的格式控制說起來就比較復雜了,我就不詳述了,如果大家有需要,可以看下面文檔:

  1. 最好的學習文檔:官方API
  2. $用python-docx模塊讀寫word文檔
  3. 使用Python寫入docx文件並控制字體顏色
  4. python docx 中文字體設置

網上資料很多,大家有更多需求就自己去找吧,或着留言。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM