基于python的docx模块处理word和WPS的docx格式文件方式


Posted in Python onFebruary 13, 2020

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

楼宇名称 宗地位置 所临道路名称 交叉路口形式 宗地形状 建筑朝向 临街状况 周围土地利用类型 装修标准 房屋结构 质量等级 采光通风状况 总建筑面积 楼层数 已使用年限 建筑容积率 使用权取得时间
0 百兴花园 鄂州市鄂城区凤凰路47-11号 凤凰路 丁字路口 多边形 离街 商业用地 豪华 1、钢 2、钢、钢混 3、钢混 4、混合 5、砖木 6、其它 完好 122.7平方米 8 13年

Succeed!!!

之后只需要用一个glob函数取出所有的文档的path,然后依次执行上面的命令,即可完成word表格到excel(实际上是csv形式)的自动填表过程。

以上这篇基于python的docx模块处理word和WPS的docx格式文件方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 类与元类的深度挖掘 II【经验】
May 06 Python
pandas实现选取特定索引的行
Apr 20 Python
numpy 计算两个数组重复程度的方法
Nov 07 Python
Python实现的调用C语言函数功能简单实例
Mar 13 Python
python函数与方法的区别总结
Jun 23 Python
python命令行参数用法实例分析
Jun 25 Python
Pytorch 实现权重初始化
Dec 31 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 Python
python实现udp传输图片功能
Mar 20 Python
python实现网页录音效果
Oct 26 Python
python 实现的车牌识别项目
Jan 25 Python
如何基于python实现单目三维重建详解
Jun 25 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 #Python
Python使用docx模块实现刷题功能代码
Feb 13 #Python
Tensorflow训练MNIST手写数字识别模型
Feb 13 #Python
Python3 读取Word文件方式
Feb 13 #Python
解决Python import docx出错DLL load failed的问题
Feb 13 #Python
python求最大公约数和最小公倍数的简单方法
Feb 13 #Python
python圣诞树编写实例详解
Feb 13 #Python
You might like
两种php去除二维数组的重复项方法
2015/11/04 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
jquery中event对象属性与方法小结
2013/12/18 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
js模态对话框使用方法详解
2017/02/16 Javascript
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
vue生命周期实例小结
2018/08/15 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
Python素数检测实例分析
2015/06/15 Python
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
python selenium循环登陆网站的实现
2019/11/04 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
公司活动策划方案
2014/01/13 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
司机职责范本
2014/03/08 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
运动会主持词大全
2015/07/02 职场文书
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android