python中使用docx庫操作word文檔記錄(1)- 讀取文本和表格
本文記錄docx庫讀取word文本和表格的方法
一、使用docx模塊
Python可以利用python-docx模塊處理word文檔,處理方式是面向對象的。也就是說python-docx模塊會把word文檔,文檔中的段落、文本、字體等都看做對象,對對象進行處理就是對word文檔的內容處理。
安裝方法為:pip install python-docx
二、相關概念
先了解python-docx模塊的幾個概念。
1,Document對象,表示一個word文檔。
2,Paragraph對象,表示word文檔中的一個段落
3,Paragraph對象的text屬性,表示段落中的文本內容。
三、讀取文本
from docx import Document #導入庫
path = 'ys.docx' #文件路徑
wordfile = Document(path) #讀入文件
paragraphs = wordfile.paragraphs
#輸出每一段的內容
for paragraph in wordfile.paragraphs:
print(paragraph.text +"\n end")
#輸出段落編號及段落內容
for i in range(len(wordfile.paragraphs)):
print("第"+str(i)+"段的內容是:"+wordfile.paragraphs[i].text)
如果不需要獲取文本中的空行,則可以增加下面的判斷條件:
if paragraphs[i].text.strip()!="": # 去空行
或者
if paragraph.text.count("\n") == len(paragraph.text): # 去空行
四、讀取表格
from docx import Document #導入庫
path = '1.docx' #文件路徑
document = Document(path) #讀入文件
tables = document.tables #獲取文件中的表格集
print(len(tables)) #獲取文件中的表格數量
for table in tables:#遍歷每一個表格
for row in table.rows:#從表格第一行開始循環讀取表格數據
for cell in row.cells:#遍歷每一個單元格
print(cell.text) #獲取單元格的內容
'''
后面兩行也可以用下面的方式
for j in range(len(row.cells)):
print(row.cells[j].text)
'''
這里要說明一下,不是word里面所有的表格都能正確讀取。
如下圖:帶一個錨,表格外圍有虛線的這類表格提取不到,不知道有沒有好的方法。
這類的表格一般是pdf或者其他系統生成的表格,並非直接在word中插入的表格。