python讀取docx檔案,就是如此簡單

testingbang發表於2020-05-02

中文編碼問題總是讓人頭疼(尤其是mac本),想要用 Python讀取word中的內容。用open()經常報錯,透過百度搜尋+問身邊小夥伴發現了 Python有專門讀取.docx的模組python_docx。本篇文章主要來解決一個讀取docx檔案的基本操作。希望感興趣的小夥伴可以堅持看下去同時歡迎提出寶貴的意見讓我們一起進步!

01:問題丟擲與引入
import docx

path = "C:\\Users\\qin\\Desktop\\1.docx"
file_object=open(path,'rb')
print(file_object.read())
#輸出結果如下所示:
b'PK\\x03\\x04\\x14\\x00\\x06\\x00\\x08\\x00\\x00\\x00!\\x00J\\xbc\\x02qm\\x01\\x00\\x00
(\\x06\\x00\\x00\\x13\\x00\\x08\\x02[Content_Types].xml \\xa2\\x04\\x02(\\xa0\.....

一個很簡單的docx檔案,列印出來的結果卻不是我們想要的。對此引入一個十分好用的docx模組,下面就詳細介紹該模組的一些基本操作。

02:安裝docx模組
pip install python_docx

03:新建文件物件
import docx

from docx import Document
# 新建文件,並將其儲存名為“test.docx”的檔案
document = Document()
document.save('test.docx')
04:新增文件內容
import docx

from docx import Document
from docx.shared import Inches
document = Document('C:\\Users\\qin\\Desktop\\1.docx')
document.add_heading('I like python', 0)#插入標題:0表示樣式為title標題
document.add_heading('一級標題', level=1)#插入1級標題
p = document.add_paragraph('Python是一種計算機程式設計語言 ')#插入段落
document.add_picture('C:\\Users\\qin\\Desktop\\1.png', width=Inches(1.25)) #新增圖片並指定寬度
table = document.add_table(rows=1, cols=3)  #新增一個表格,每行三列
hdr_cells = table.rows[0].cells  #獲取第一行的單元格列表物件
hdr_cells[0].text = 'ID'    #為每一個單元格賦值
hdr_cells[1].text = 'Name'
hdr_cells[2].text = 'Age'
new_cells = table.add_row().cells #為表格新增一行
new_cells[0].text = '1'
new_cells[1].text = 'Tom'
new_cells[2].text = '15'
document.add_page_break()   #新增分頁符
05:儲存文件內容

名字相同則將修改的檔案內容 儲存; 名字不同則將修改的檔案內容 另存為

import docx

from docx import Document
document.save('C:\\Users\\qin\\Desktop\\1.docx')#儲存
document.save('C:\\Users\\qin\\Desktop\\2.docx')#另存為
06:讀取文字內容
import docx

from docx import Document
path = "C:\\Users\\qin\\Desktop\\1.docx"
document = Document(path)
for paragraph in document.paragraphs:
   print(paragraph.text)
07:讀取表格內容
import docx

from docx import Document
path = "C:\\Users\\qin\\Desktop\\1.docx"
document = Document(path)  # 讀入檔案
tables = document.tables   # 獲取檔案中的表格集
table = tables[0]  # 獲取檔案中的第一個表格
for i in range(0, len(table.rows)):  # 從表格第一行開始迴圈讀取表格資料
   result = f'{(table.cell(i, 0).text):<5}' + "" + f'{(table.cell(i, 1).text):<5}' + "" + f'{(table.cell(i, 2).text):<5}'
   # cell(i,0)表示第(i+1)行第1列資料,以此類推
   print(result)

想要知道docx模組更多資料參考:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2689725/,如需轉載,請註明出處,否則將追究法律責任。

相關文章