Python小技巧:提取docx文件中表格

'''
使用的包:python-docx
安裝方式:conda install -c conda-forge python-docx
幫助文檔:https://python-docx.readthedocs.io/en/latest/index.html#
'''
import docx 
# import os
from docx import Document

# 1、路徑出現的問題特別多,可以參考下方的程序檢驗路徑
# 2、文件名稱好像不能是中文
doc_file = '/Users/matthewfan/Documents/123.docx'
document = Document(doc_file)

tables = document.tables # 獲取文檔中的所有表格
table = tables[0] # 提取文檔中的第一個表格,測試文檔中僅有一個表格

lo = {} # 存儲每一行去重後的數據
for row in range(0, len(table.rows)):
    row_list = []
    for col in range(0,len(table.row_cells(row))):  # 提取row行的全部列數據
        row_list.append(table.cell(row,col).text.replace('\n','').replace(' ', '')) # 去除字符串中的特殊字符,並添加到臨時列表中
    lo[row] = (sorted(set(row_list), key = row_list.index)) # 在不變順序的前提下,去除List中的重複項
    
    # 打印出每行的數據觀察相關格式特徵
    print(row, ":len(", len(lo[row]),'):',lo[row])

輸出結果:

(1)可以通過數據的長度進行類型名與內容的區分

(2)可以通過配置文件進行類型的歸類,提高docx文件變化而引起的開發量(暫不提供處理代碼)

0 :len( 7 ): ['姓名', '***', '性別', '男', '出生日期(歲)', '1978.11(41歲)', '']
1 :len( 6 ): ['民族', '漢族', '籍貫', '天津', '出生地', '']
2 :len( 7 ): ['入黨時間', '2000.06', '工作時間', '1990.07', '健康狀況', '良好', '']
3 :len( 4 ): ['職稱', '高級工程師', '熟悉專業有何專長', '']
4 :len( 5 ): ['學歷學位', '全日制教育', '大學學士', '畢業院校及專業', '重慶大學電力系統及其自動化']
5 :len( 4 ): ['學歷學位', '在職教育', '', '畢業院校及專業']
6 :len( 2 ): ['現任職務', '西太平洋機甲公司***部副主任']
7 :len( 3 ): ['工作及學習簡歷', '1986.09-1990.07', '重慶大學電力系統及其自動化專業學習,獲得大學學歷,工學學']
8 :len( 3 ): ['工作及學習簡歷', '', '士學位']
9 :len( 3 ): ['工作及學習簡歷', '1990.07-1997.06', '西太平洋機甲公司*********技術員']
10 :len( 3 ): ['工作及學習簡歷', '1997.06-2001.07', '西太平洋機甲公司*********班班長']
11 :len( 3 ): ['工作及學習簡歷', '2001.07-2002.07', '西太平洋機甲公司*********副主任']
12 :len( 3 ): ['工作及學習簡歷', '2002.07-2005.04', '西太平洋機甲公司***']
13 :len( 3 ): ['工作及學習簡歷', '2005.04-2009.02', '西太平洋機甲公司***']
14 :len( 3 ): ['工作及學習簡歷', '2009.02-2012.02', '西太平洋機甲公司***部***處長']
15 :len( 3 ): ['工作及學習簡歷', '2012.02-2013.05', '西太平洋機甲公司***部***處長']
16 :len( 3 ): ['工作及學習簡歷', '2013.05-2016.08', '西太平洋機甲公司*********處處長']
17 :len( 3 ): ['工作及學習簡歷', '2016.08-2019.05', '西太平洋機甲公司*********處處長']
18 :len( 3 ): ['工作及學習簡歷', '2019.05-', '西太平洋機甲公司***部副主任']
19 :len( 2 ): ['工作及學習簡歷', '']
20 :len( 2 ): ['工作及學習簡歷', '']
21 :len( 2 ): ['工作及學習簡歷', '']
22 :len( 2 ): ['工作及學習簡歷', '']
23 :len( 2 ): ['工作及學習簡歷', '']
24 :len( 2 ): ['工作及學習簡歷', '']
25 :len( 2 ): ['工作及學習簡歷', '']
26 :len( 2 ): ['工作及學習簡歷', '']
27 :len( 2 ): ['工作及學習簡歷', '']
28 :len( 2 ): ['工作及學習簡歷', '']
29 :len( 2 ): ['工作及學習簡歷', '']
30 :len( 2 ): ['工作及學習簡歷', '']
31 :len( 2 ): ['工作及學習簡歷', '']
32 :len( 2 ): ['工作及學習簡歷', '']
33 :len( 6 ): ['家庭主要成員及重要社會關係', '稱謂', '姓名', '年齡', '政治面貌', '工作單位及職務']
34 :len( 6 ): ['家庭主要成員及重要社會關係', '妻子', '***', '49', '羣衆', '西太平洋機甲公司***']
35 :len( 6 ): ['家庭主要成員及重要社會關係', '女兒', '***', '25', '羣衆', '無業']
36 :len( 6 ): ['家庭主要成員及重要社會關係', '父親', '***', '75', '羣衆', '銀河系聯席會***']
37 :len( 6 ): ['家庭主要成員及重要社會關係', '母親', '***', '75', '羣衆', '火星聯邦議會***']
38 :len( 2 ): ['家庭主要成員及重要社會關係', '']
39 :len( 2 ): ['家庭主要成員及重要社會關係', '']

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章