基于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之传说中的函数编写条规
Oct 11 Python
Python实现的彩票机选器实例
Jun 17 Python
浅谈Python Opencv中gamma变换的使用详解
Apr 02 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
Apr 05 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
Jul 04 Python
pandas 对group进行聚合的例子
Dec 27 Python
opencv 图像轮廓的实现示例
Jul 08 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
Aug 04 Python
Python SMTP发送电子邮件的示例
Sep 23 Python
使用numpy实现矩阵的翻转(flip)与旋转
Jun 03 Python
浅析Python中的随机采样和概率分布
Dec 06 Python
Python可视化学习之matplotlib内置单颜色
Feb 24 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 工厂模式使用方法
2010/05/18 PHP
str_replace只替换一次字符串的方法
2013/04/09 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
jquery 批量上传图片实现代码
2010/01/28 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
node.js中的buffer.copy方法使用说明
2014/12/14 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
vue-music关于Player播放器组件详解
2017/11/28 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
Python发送Email方法实例
2014/08/21 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
Python如何生成树形图案
2018/01/03 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
django框架ModelForm组件用法详解
2019/12/11 Python
python实现名片管理器的示例代码
2019/12/17 Python
如何使用python切换hosts文件
2020/04/29 Python
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
美国第二大连锁书店:Books-A-Million
2017/12/28 全球购物
元旦标语大全
2014/10/09 职场文书
2015年转正工作总结范文
2015/04/02 职场文书
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
Linux中各个目录的作用与内容
2022/06/28 Servers