如何识别Word文档中的复选框

  • 前言
  • 一、程序思路及准备工作
    • 程序思路:
    • 准备工作:
  • 二、使用步骤
    • 1.引入库
    • 2.将Word文档转为html并读入
    • 3.用Xpath提取所需数据
  • 三、遇到的问题
  • 总结

前言

我在做将Word文档中数据汇总到Excel表格(小菜鸟的Python笔记001:将Word文档中数据汇总到Excel表格)的过程中遇到了一个问题,直接提取文档中的复选控件,是无法识别它有没有被选中。在网上找了好久都没有找到相应的解决方法,我苦思冥想了好久,终于想到了一个比较曲折的方法,如果有更好的方法,欢迎来和我交流!

一、程序思路及准备工作

程序思路:

我想,我用win32com库调用Word打开后直接提取无法识别,那Word是如何识别到它,然后把它显示出来的呢?后来我想到了,如果把它转为html,那浏览器是否能够识别呢?我试了一下,用浏览器打开它,能够正常显示,我再打开调试模式,找到复选框对应的标签,发现在html中已打勾的复选框表示的符号为"þ"或者"R",未选中的为”o“或者”··“。故我想到了以下方法:
1、将Word文档转为html格式
2、读入html文件
3、用Xpath提取对应标签信息
4、判断是否打勾

准备工作:

这里用到了lxml这个库中的etree函数,它可将html转为xpath可识别的xml

二、使用步骤

1.引入库

from lxml import etree

2.将Word文档转为html并读入

html_path="D:\T5.html"
doc.SaveAs(html_path,8)                 #另存为html,8代表html
doc.Close()
f = codecs.open(html_path, "r", "gbk")  #读取html
content = f.read()
f.close()
tree = etree.HTML(content)

3.用Xpath提取所需数据

found=tree.xpath("/html/body/div/div/table/tr[18]/td[4]/p[1]/span[2]/text()")[0]    #用xpath提取数据,xpath路径可在浏览器调试模式中复制
notfound=tree.xpath("/html/body/div/div/table/tr[18]/td[4]/p[2]/span[2]/text()")[0]if ((found=="þ")or(found=="R"))&(found!=notfound):     #判断whether_found="已开发"
elif ((notfound=="þ")or(notfound=="R"))&(found!=notfound):whether_found="未开发"
else:whether_found ="出错"

三、遇到的问题

在用xpath提取数据的时候,我用浏览器复制下来的xpath路径,死活都提取不出来,试了好多次提取出来的都是一个空列表,后来在网上找了一下,原来是因为浏览器有时会为了显示加上一些标签,在用xpath提取的时候就失败了。如我上述的xpath路径为"/html/body/div/div/table/tr[18]/td[4]/p[1]/span[2]/text()",但是从浏览器复制出来的是"/html/body/div/div/tbody/table/tr[18]/td[4]/p[1]/span[2]/text()"。当时死活都没想到是这个原因,所以如果你也遇到这样的问题,不妨先检查一下xpath路径是否正确。

总结

上述方法我觉得十分的曲折,而且程序运行地比较慢,但是我也只能想到这个方法了,如果你有更好地方法,欢迎来跟我交流!

第一次写技术分享文章,较为粗略,有问题可以私信和我交流!

小菜鸟的Python笔记002:如何识别Word文档中的复选框相关推荐

  1. 小菜鸟的Python笔记001:将Word文档中数据汇总到Excel表格

    将Word文档中数据汇总到Excel表格 前言 一.应用场景 二.程序思路及准备工作 思路如下: 准备工作: 三.程序代码 1.主程序 2.获取Word文档列表 3.提取文档内数据 4.导入到Exce ...

  2. 【Python】导出docx格式Word文档中的文本、图片和附件等

    [Python]导出docx格式Word文档中的文本.图片和附件等 零.需求 为批量批改学生在机房提交的实验报告,我需要对所有的实验文档内容进行处理.需要批量提取Word文档中的图片和附件以便进一步检 ...

  3. Python批量提取docx格式Word文档中所有批注

    封面图片:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: 用书教师可以联系董老师获取教学大纲.课件.源码.教案.考试系统等配 ...

  4. Python批量提取docx格式Word文档中所有文本框内的文本

    功能描述: 批量提取指定Word文档(docx格式)中所有文本框中的文本. 测试文件: 参考代码: 执行结果:

  5. python环绕文字_Java 设置 Word 文档中图片文字环绕方式

    Java 设置 Word 文档中图片文字环绕方式 在Word文档中插入图片时,选择合理的图片文字环绕方式可以使图片的展示效果更好,也能使页面的排版更加美观.本文就将介绍如何使用Free Spire.D ...

  6. Python 使用docx库操作word文档中的表格单元格内容

    1.导入库 from docx import Document 2.加载word文档对象 doc = Document(path) 3.定位表格 # 获取所有表格对象 tables = doc.tab ...

  7. Word处理控件Aspose.Words功能演示:使用 Python 查找和替换 Word 文档中的文本

    很多时候,您需要替换 Word 文档中的特定文本或短语.MS Word 具有针对此类情况的内置功能,您可以一键替换所需的文本.在本文中,您将学习如何使用 Python 以编程方式查找和替换 Word ...

  8. 办公室小姐姐的福利!用Python批量提取word文档中的表格和图片内容

    点上方"菜鸟学Python",选择"星标" 第491篇原创干货,第一时间送达 最近有许多小伙伴想要一些自动化办公的福利小程序,今天就满足大家的需求.日常的办公过 ...

  9. Python提取word文档中的图片,识别图片文字之后再转存为word文档

    #!/usr/bin/env python # coding: utf-8 import zipfile #压缩包 import os #文件库 import shutil import pytess ...

  10. Python 读取 PDF 信息插入 Word 文档

    Python 读取 PDF 信息插入 Word 文档 思路 PDFMiner模块 docx-mailmerge 模块 回顾 代码下载 Hello,上个周末没能搞事情,被一个代码需求给绊住了:朋友在平时 ...

最新文章

  1. Moore状态机和Mealy状态机的区别
  2. [Swift]LeetCode206. 反转链表 | Reverse Linked List
  3. python入门到精通自学_python入门到精通大型视频、自学者的福利
  4. CF1088F. Ehab and a weird weight formula(倍增)
  5. MySQL建表添加乐观锁字段_Java秒杀系统优化-Redis缓存-分布式session-RabbitMQ异步下单-页面静态化...
  6. oracle函数 授权,如何在Oracle中以普通用户身份运行dbms_crypto函数?
  7. mysql1000w数据怎么加索引_给mysql一百万条数据的表添加索引
  8. 中国体脂分析仪行业市场供需与战略研究报告
  9. html5控制gif图的播放和暂停,使用JS和canvas实现gif动图的停止和播放代码
  10. 190301每日一句
  11. ValueError: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216 fro m C...
  12. CSS动画 animation与transition
  13. 办公必备计算机软件,推荐8个职场办公的必备软件,每一个都能让你有所收获!...
  14. R语言柯西概率分布(cauchy distribution)函数(dcauchy, pcauchy, qcauchy rcauchy)实战
  15. ABAP 企业微信ASE 加密算法
  16. linux服务器配置磁盘阵列,Linux下的RAID配置和管理
  17. git describe 生成版本号
  18. 怎样再网上卖东西,让小编来教你开网店!
  19. 真实案例:一个渠道、一本书,狠狠赚了200万
  20. 【 Vue全家桶 · Vue CLI(四)】Vue项目的详细目录结构解析

热门文章

  1. office2013卸载工具
  2. edp和edt哪个好_菲拉格慕香水edp和edt的区别 选择适合自己的香水方法
  3. SEO搜索引擎优化是什么
  4. linux 中的 usr 是什么含义
  5. python参数类型为uint8_Python 改变数组类型为uint8的实现
  6. 阿里云Hologres外部表的创建及使用
  7. 项目:任务清单(Vuex)
  8. 恒生ufx接口转变成CTP接口
  9. mac谷歌浏览器怎么登陆账户_苹果电脑怎么安装谷歌浏览器_macbook如何下载安装谷歌浏览器-win7之家...
  10. C语言:实数类型。2021-02-15