基于python的docx模块处理word和WPS的docx格式文件方式
PythondocxmoduleforWordorWPSprocessing
本文是通过docx把word中的表格中的某些已填好的内容提取出来,存入excel表格。
首先安装docx的python模块:
pipinstallpython-docx
由于处理的为中文和符号,改成utf-8编码格式
importsys reload(sys) sys.setdefaultencoding('utf-8') fromdocximportDocument importpandasaspd
#打开文件 doc=Document(ur'test_1.docx')
为了处理word中以对勾形式勾选的项目,采用下面的方法
1、十字路口√2、丁字路口3、环形路口4、人行立交
#取出对号勾选的项目 printdoc.tables[0].rows[3].cells[2].text printdoc.tables[0].rows[3].cells[2].text.split(u'√')[1].strip().split('')[0][2:] '√'indoc.tables[0].rows[3].cells[2].text#这个语句可以测试是否含有对勾, #有的话就取出对勾后面的item,否则直接返回填空的text
True
num_rows=len(doc.tables[0].rows) printnum_rows
xls=pd.read_csv(ur'output.csv')
printxls.columns[0] diction={}
#找到每个excel文档中需要被记录的键值在docx文档表格中的位置 forxlskeyinxls.columns: forrow_idinrange(num_rows): row=doc.tables[0].rows[row_id] forcell_idinrange(len(row.cells)): ifrow.cells[cell_id].text.strip()==xlskey.strip(): diction[xlskey]=[row_id,cell_id]
#查看一下获得的键值位置 forkeyinlist(diction.keys()): printkey,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,因此我们只需要将rowid不变,cell+1,就能取出填表内容。
#开始填表!!! foreach_columninxls.columns: pos=diction[each_column] textion=doc.tables[0].rows[pos[0]].cells[pos[1]+1].text ifu'√'intextion: this_text=textion.strip('').split(u'√')[1].split()[0][2:] else: this_text=textion xls.loc[0,each_column]=this_text
xls
Succeed!!!
之后只需要用一个glob函数取出所有的文档的path,然后依次执行上面的命令,即可完成word表格到excel(实际上是csv形式)的自动填表过程。
以上这篇基于python的docx模块处理word和WPS的docx格式文件方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。