Python讀取word文檔內容


1,利用python讀取純文字的word文檔,讀取段落和段落里的文字。

先讀取段落,代碼如下:

 1 '''
 2     #利用python讀取word文檔,先讀取段落
 3 '''
 4 #導入所需庫
 5 from docx import Document
 6 
 7 #打開word文檔
 8 document = Document("D:/路徑/長恨歌.docx")
 9 
10 #獲取所有段落
11 all_paragraphs = document.paragraphs
12 #打印看看all_paragraphs是什么東西
13 print(type(all_paragraphs)) #<class 'list'>,打印后發現是列表
14 #是列表就開始循環讀取
15 for paragraph in all_paragraphs:
16     #打印每一個段落的文字
17     print(paragraph.text)

效果:

再讀取段落里的內容,代碼如下:

 1 '''
 2     #利用python讀取word文檔
 3 '''
 4 #導入所需庫
 5 from docx import Document
 6 
 7 #打開word文檔
 8 document = Document("D:/路徑/長恨歌.docx")
 9 
10 #獲取所有段落
11 all_paragraphs = document.paragraphs
12 #打印看看all_paragraphs是什么東西
13 print(type(all_paragraphs)) #<class 'list'>,打印后發現是列表
14 #是列表就開始循環讀取
15 for paragraph in all_paragraphs:
16     #打印每一個段落的文字
17     #print(paragraph.text)
18     #循環讀取每個段落里的run內容
19     for run in paragraph.runs:
20         print(run.text) #打印run內容

效果如下:

其實都准確的獲取了文字內容,但是paragraph是保留了word文檔里的換行符,而run是沒有保留的。

 

2,利用python讀取純表格文檔,那要讀取的文字都是存儲在單元格里,需要讀取單元格里的內容:

 1 '''
 2     #利用python讀取word文檔,表格文檔
 3 '''
 4 #導入所需庫
 5 from docx import Document
 6 
 7 #打開文件
 8 document = Document("D:/路徑/長恨歌-表格.docx")
 9 #獲取文檔所有表格
10 all_tables = document.tables
11 
12 #打印all_tables類型
13 print(type(all_tables)) #得到<class 'list'>,即列表
14 #開始循環讀取表格列表
15 for table in all_tables:
16     #循環讀取表格的每一行
17     for row in table.rows:
18         #print(row)
19         #循環讀取表格的每一個單元格
20         for cell in row.cells:
21             #打印單元格里的內容
22             print(cell.text) #打印

3,利用python讀取word文檔,文檔是表格加文字組合而成的。這個就設計word文檔格式問題了。將要處理的word文檔后綴名改為zip,發現也可以打開,里面有幾個文件如圖:

點開word目錄,發現有個document.xml,這就是我們要處理的文件。

代碼開始:

 1 '''
 2     #利用python讀取word文檔,表格文檔
 3 '''
 4 #導入所需庫
 5 import zipfile #解壓文件庫
 6 #先將要處理的word文檔用zipfile進行壓縮
 7 word = zipfile.ZipFile('D:/路徑/長恨歌-文字+表格.docx')
 8 
 9 #找到要處理的xml文件並以utf-8的格式讀取
10 xml = word.read('word/document.xml').decode('utf-8')
11 #打印看看
12 #print(type(xml)) #字符串
13 #print(xml) #打印整個字符串
14 #接下來分割字符串並存儲到列表中
15 xml_list = xml.split('<w:t>') #以字符串<w:t>進行分割字符串
16 #打印看是否符合預期
17 #print(type(xml_list)) #是列表
18 #print(xml_list) #列表內容
19 
20 #開始切片,找標簽</w:t>
21 text_list = [] #新建空list用以存儲切出來的數據
22 #開始循環讀取列表xml_list
23 for i in xml_list:
24     #條件查找
25     if i.find('</w:t>') + 1: #切片查找是如果沒找到是會返回-1,我們+1讓他返回0,再運行else分支
26         text_list.append(i[:i.find('</w:t>')]) #如果不是返回0就把找到的依次追加到text_list末尾
27     else:
28         pass
29 #print(text_list)
30 #再將得到的列表拆分為字符串
31 text = ''.join(text_list) #以空字符串為間隔,將列表拆分為字符串
32 print(text)

第三個表格加文字的取出文字有點繞,多處理幾遍就行了。

 


免責聲明!

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



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