首先安裝docx模塊,通過pip install docx或者在docx官方鏈接上下載安裝都可以
下面來看下如何解析docx文檔:文檔格式如下
有3個部分組成 1 正文:text文檔 2 一個表格。 3一個插入的文件對象。4 一個圖片 這4個部分是我們在docx文檔中最常見的幾種格式。解析代碼如下
import docx
def docx_try():
doc=docx.Document(r'E:\py_prj\test.docx')
for p in doc.paragraphs:
print p.text
for t in doc.tables:
for r in t.rows:
for c in r.cells:
print c.text
E:\python2.7.11\python.exe E:/py_prj/test3.py
Test文檔
名稱
作用
Python
解析數據
C語言
調用底層接口
HTML
網頁數據
首先是用docx.Document打開對應的文件目錄。docx文件的結構比較復雜,分為三層,1、Docment對象表示整個文檔;2、Docment包含了Paragraph對象的列表,Paragraph對象用來表示文檔中的段落;3、一個Paragraph對象包含Run對象的列表。 因此p.text會打印出整個的文本文檔。而用doc.tables來遍歷所有的表格。並且對每個表格通過遍歷行,列的方式來得到所有的內容。
但是在運行結果中並沒有找到我們插入的文件對象和圖片,text.txt文檔。這部分該如何解析呢。首先我們需要先來認識下docx文檔的格式組成:
docx是Microsoft Office2007之后版本使用的,用新的基於XML的壓縮文件格式取代了其目前專有的默認文件格式,在傳統的文件名擴展名后面添加了字母“x”(即“.docx”取代“.doc”、“.xlsx”取代“.xls”、“.pptx”取代“.ppt”)。
docx格式的文件本質上是一個ZIP文件。將一個docx文件的后綴改為ZIP后是可以用解壓工具打開或是解壓的。事實上,Word2007的基本文件就是ZIP格式的,他可以算作是docx文件的容器。
docx 格式文件的主要內容是保存為XML格式的,但文件並非直接保存於磁盤。它是保存在一個ZIP文件中,然后取擴展名為docx。將.docx 格式的文件后綴改為ZIP后解壓, 可以看到解壓出來的文件夾中有word這樣一個文件夾,它包含了Word文檔的大部分內容。而其中的document.xml文件則包含了文檔的主要文本內容
從上面的文檔我們可以了解到docx文檔實際上是由XML文檔打包組成的。那么我們要得到其中所有的部分,可以用ZIP解壓的方式來得到所有的部件。我們先試下看是否可以
1 將docx文檔改成ZIP的后綴
2 解壓文件
解壓之后得到如下幾個文件
點開word文件夾:有如下的文件夾。document.xml就是描述文本對象的文件
其中embeddings文件中就是我們插入的文本對象text.txt. 是一個bin文件
Media文件中就是存儲的圖片:
我們通過手動的方式將插入的文本以及圖片解析出來,那么通過代碼也是同樣可以解析的。代碼如下。
os.chdir(r'E:\py_prj') #首先改變目錄到文件的目錄
os.rename('test.docx','test.ZIP') # 重命名為zip文件
f=zipfile.ZipFile('test.zip','r') #進行解壓
for file in f.namelist():
f.extract(file)
file=open(r'E:\py_prj\word\embeddings\oleObject1.bin','rb').read() #進入文件路徑,讀取二進制文件。
for f in file:
print f
通過上面的方式,就可以將docx中插入的文件以及圖片全部解析出來。具體docx的寫的方式可以參考官方文檔的介紹