基于python的docx模塊處理word和WPS的docx格式文件方式
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]
樓宇名稱 [15, 5]
質(zhì)量等級(jí) [18, 1]
周圍土地利用類型 [11, 1]
總建筑面積 [20, 1]
宗地位置 [0, 1]
所臨道路名稱 [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
| 樓宇名稱 | 宗地位置 | 所臨道路名稱 | 交叉路口形式 | 宗地形狀 | 建筑朝向 | 臨街狀況 | 周圍土地利用類型 | 裝修標(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è)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python+OpenCV 實(shí)現(xiàn)簡(jiǎn)單的高斯濾波(推薦)
這篇文章主要介紹了Python+OpenCV 實(shí)現(xiàn)簡(jiǎn)單的高斯濾波,在文中需要注意的是,這里我沒(méi)有特判當(dāng)sigma = 0的時(shí)候的情況,具體實(shí)現(xiàn)過(guò)程跟隨小編一起看看吧2021-09-09
python中dict()的高級(jí)用法實(shí)現(xiàn)
這篇文章主要介紹了python中dict()的高級(jí)用法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Python環(huán)境的安裝以及PyCharm編輯器配置教程詳解
優(yōu)質(zhì)的教程可以讓我們少走很多彎路,這一點(diǎn)毋庸置疑。這篇文章主要為大家介紹了純凈Python環(huán)境的安裝以及PyCharm編輯器的配置,需要的可以參考一下2023-04-04
Python使用SQLite和Excel操作進(jìn)行數(shù)據(jù)分析
這篇文章主要介紹了Python使用SQLite和Excel操作進(jìn)行數(shù)據(jù)分析,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Python實(shí)現(xiàn)的從右到左字符串替換方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的從右到左字符串替換方法,涉及Python字符串遍歷、運(yùn)算、判斷、替換等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07

