1. 程式人生 > >利用python的docx模組處理word和WPS的docx格式檔案

利用python的docx模組處理word和WPS的docx格式檔案

Python docx module for Word or WPS processing

本文是通過docx把word中的表格中的某些已填好的內容提取出來,存入excel表格。

首先安裝docx的python模組:

pip install python-docx

由於處理的為中文和符號,改成utf-8編碼格式

import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from docx import Document
import pandas as pd
# 開啟檔案
doc = Document(ur'test_1.docx'
)

為了處理word中以對勾形式勾選的專案,採用下面 的方法
1、十字路口 √ 2、丁字路口 3、環形路口 4、人行立交

# 取出對號勾選的專案
print doc.tables[0].rows[3].cells[2].text
print doc.tables[0].rows[3].cells[2].text.split(u'√')[1].strip().split(' ')[0][2:]
'√' in doc.tables[0].rows[3].cells[2].text # 這個語句可以測試是否含有對勾,
# 有的話就取出對勾後面的item,否則直接返回填空的text
True
num_rows = len(doc.tables[0].rows)
print num_rows
xls = pd.read_csv(ur'output.csv')
print xls.columns[0]
diction = {}
# 找到每個excel文件中需要被記錄的鍵值在docx文件表格中的位置
for xlskey in xls.columns:
    for row_id in range(num_rows):
        row = doc.tables[0].rows[row_id]
        for cell_id in
range(len(row.cells)): if row.cells[cell_id].text.strip() == xlskey.strip(): diction[xlskey] = [row_id, cell_id]
# 檢視一下獲得的鍵值位置
for key in list(diction.keys()):
    print key, diction[key]

樓層數 [21, 1]

宗地形狀 [4, 1]

使用權取得時間 [14, 1]

採光通風狀況 [19, 1]

已使用年限 [21, 4]

建築朝向 [7, 1]

房屋結構 [17, 1]

交叉路口形式 [3, 1]

臨街狀況 [8, 1]

建築容積率 [10, 5]

樓宇名稱 [15, 5]

質量等級 [18, 1]

周圍土地利用型別 [11, 1]

總建築面積 [20, 1]

宗地位置 [0, 1]

所臨道路名稱 [2, 1]

裝修標準 [16, 1]

那麼我們認為這些表頭鍵值對應的填入資料就在他們的右邊,也就是下一個cell,因此我們只需要將row id不變,cell+1,就能取出填表內容。

# 開始填表!!!
for each_column in xls.columns:
    pos = diction[each_column]
    textion = doc.tables[0].rows[pos[0]].cells[pos[1] + 1].text
    if u'√' in textion:
        this_text = textion.strip(' ').split(u'√')[1].split()[0][2:]
    else:
        this_text = textion
    xls.loc[0, each_column] = this_text
xls
.dataframe thead tr:only-child th { text-align: right; } .dataframe thead th { text-align: left; } .dataframe tbody tr th { vertical-align: top; }
樓宇名稱 宗地位置 所臨道路名稱 交叉路口形式 宗地形狀 建築朝向 臨街狀況 周圍土地利用型別 裝修標準 房屋結構 質量等級 採光通風狀況 總建築面積 樓層數 已使用年限 建築容積率 使用權取得時間
0 百興花園 鄂州市鄂城區鳳凰路47-11號 鳳凰路 丁字路口 多邊形 離街 商業用地 豪華 1、鋼 2、鋼、鋼混 3、鋼混 4、混合 5、磚木 6、其它 完好 122.7平方米 8 13年

Succeed!!!

之後只需要用一個glob函式取出所有的文件的path,然後依次執行上面的命令,即可完成word表格到excel(實際上是csv形式)的自動填表過程。

2018年05月21日16:58:36