溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

基于python的docx模塊處理word和WPS的docx格式文件方式

發(fā)布時(shí)間:2020-08-23 05:37:05 來(lái)源:腳本之家 閱讀:402 作者:江戶川柯壯 欄目:開(kāi)發(fā)技術(shù)

Python docx module for Word or WPS processing

本文是通過(guò)docx把word中的表格中的某些已填好的內(nèi)容提取出來(lái),存入excel表格。

首先安裝docx的python模塊:

pip install python-docx

由于處理的為中文和符號(hào),改成utf-8編碼格式

import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from docx import Document
import pandas as pd
# 打開(kāi)文件
doc = Document(ur'test_1.docx')

為了處理word中以對(duì)勾形式勾選的項(xiàng)目,采用下面 的方法

1、十字路口 √ 2、丁字路口 3、環(huán)形路口 4、人行立交

# 取出對(duì)號(hào)勾選的項(xiàng)目
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 # 這個(gè)語(yǔ)句可以測(cè)試是否含有對(duì)勾,
# 有的話就取出對(duì)勾后面的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 = {}
# 找到每個(gè)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]

樓層數(shù) [21, 1]

宗地形狀 [4, 1]

使用權(quán)取得時(shí)間 [14, 1]

采光通風(fēng)狀況 [19, 1]

已使用年限 [21, 4]

建筑朝向 [7, 1]

房屋結(jié)構(gòu) [17, 1]

交叉路口形式 [3, 1]

臨街狀況 [8, 1]

建筑容積率 [10, 5]

樓宇名稱(chēng) [15, 5]

質(zhì)量等級(jí) [18, 1]

周?chē)恋乩妙?lèi)型 [11, 1]

總建筑面積 [20, 1]

宗地位置 [0, 1]

所臨道路名稱(chēng) [2, 1]

裝修標(biāo)準(zhǔn) [16, 1]

那么我們認(rèn)為這些表頭鍵值對(duì)應(yīng)的填入數(shù)據(jù)就在他們的右邊,也就是下一個(gè)cell,因此我們只需要將row id不變,cell+1,就能取出填表內(nèi)容。

# 開(kāi)始填表?。?!
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

樓宇名稱(chēng) 宗地位置 所臨道路名稱(chēng) 交叉路口形式 宗地形狀 建筑朝向 臨街狀況 周?chē)恋乩妙?lèi)型 裝修標(biāo)準(zhǔn) 房屋結(jié)構(gòu) 質(zhì)量等級(jí) 采光通風(fēng)狀況 總建筑面積 樓層數(shù) 已使用年限 建筑容積率 使用權(quán)取得時(shí)間
0 百興花園 鄂州市鄂城區(qū)鳳凰路47-11號(hào) 鳳凰路 丁字路口 多邊形 離街 商業(yè)用地 豪華 1、鋼 2、鋼、鋼混 3、鋼混 4、混合 5、磚木 6、其它 完好 122.7平方米 8 13年

Succeed!!!

之后只需要用一個(gè)glob函數(shù)取出所有的文檔的path,然后依次執(zhí)行上面的命令,即可完成word表格到excel(實(shí)際上是csv形式)的自動(dòng)填表過(guò)程。

以上這篇基于python的docx模塊處理word和WPS的docx格式文件方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI