对比两个word文本中的表格信息

 首先安装一个包

pip install python-docx

读取doxc中的文本和表格信息是不一样的

以下先示范一个读取doxc中文本信息的方式

from docx import Document# 打开Word文档
doc = Document("test.docx")# 读取文档内容
text = ""
for paragraph in doc.paragraphs:text += paragraph.text + "\n"# 打印文档内容
print(text)

如果文件中有表格信息他也是没有办法读取到的

以下示范一个读取表格信息的方法

from docx import Document# 打开Word文档
doc = Document("test.docx")
# 读取表格内容
for table in doc.tables:for row in table.rows:for cell in row.cells:print(cell.text)# 或者可以将表格内容保存到一个嵌套列表中
tables_data = []
for table in doc.tables:table_data = []for row in table.rows:row_data = [cell.text for cell in row.cells]table_data.append(row_data)tables_data.append(table_data)# 打印表格内容
for table_index, table in enumerate(tables_data):print(f"\nTable {table_index + 1}:")for row in table:print("\t".join(row))

以上只能读取到表格信息,但是无法读取到表格之外的文本信息

如何对比两个doxc文档中的表格信息

from docx import Document# 打开Word文档
doc1 = Document("test1.docx")
list1=[]
# 遍历文档中的表格
for table in doc1.tables:# 遍历表格的行for row in table.rows:j=0stri=''# 遍历每行的单元格for cell in row.cells:if j==1 or j==2:# 打印单元格内容print(cell.text)stri=stri+cell.textj=j+1print(stri)list1.append(stri)print()  # 打印空行表示分隔行print()  # 打印空行表示分隔表格print("更新成功了吗")
print(list1)for table in doc1.tables:print(table.rows[-1])#开始打印第二个文档
doc2= Document("test2.docx")
list2=[]
# 遍历文档中的表格
for table in doc2.tables:# 遍历表格的行for row in table.rows:j=0stri=''# 遍历每行的单元格for cell in row.cells:if j==0 or j==2:# 打印单元格内容print(cell.text)stri=stri+cell.textj=j+1print(stri)list2.append(stri)print()  # 打印空行表示分隔行print()  # 打印空行表示分隔表格print("表2更新成功了吗")
print(list2)print("开始检查")for i in list1[1:]:count=0for j in list2[1:]:if i==j:count=count+1if count==0:print(i)
print("检查完了")

但如果一个单元格中的信息并不是我想要的全部,我应该怎么办(text.split("."))

from docx import Document# 打开Word文档
doc1 = Document("test1.docx")
list1=[]
# 遍历文档中的表格
for table in doc1.tables:# 遍历表格的行for row in table.rows[1:]:j=0stri=''# 遍历每行的单元格for cell in row.cells:if j==1:# 打印单元格内容# print(cell.text)stri=stri+cell.textif j==2:print(cell.text)text=cell.textparts = text.split(".")print(parts)stri=stri+parts[1]j=j+1# print(stri)list1.append(stri)print()  # 打印空行表示分隔行print()  # 打印空行表示分隔表格print("更新成功了吗")
print(list1)# 打开Word文档
doc2 = Document("test2.docx")
list2=[]
# 遍历文档中的表格
for table in doc2.tables:# 遍历表格的行for row in table.rows[1:]:j=0stri=''# 遍历每行的单元格for cell in row.cells:if j==0:# 打印单元格内容# print(cell.text)stri=stri+cell.textif j==1:print(cell.text)text=cell.textparts = text.split(".")print(len(parts))# print(parts)stri=stri+parts[1]j=j+1# print(stri)list2.append(stri)print()  # 打印空行表示分隔行print()  # 打印空行表示分隔表格print("第二个表格更新成功了吗")
print(list2)print("开始检查")for i in list1:count=0for j in list2:if i==j:count=count+1if count==0:print(i)
print("检查完了")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/15325.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阅读笔记——《ProFuzzBench: A Benchmark for Stateful Protocol Fuzzing》

【参考文献】Natella R, Pham V T. Profuzzbench: A benchmark for stateful protocol fuzzing[C]//Proceedings of the 30th ACM SIGSOFT international symposium on software testing and analysis. 2021: 662-665.【注】本文仅为作者个人学习笔记,如有冒犯&…

【flutter video_thumbnail库获取缩略图】

/** 获取视频缩略图* video_thumbnail库&#xff1a; 如果所选视频已生成过缩略图&#xff0c;那就再次生成时会报错* */getVideoThumbnail(String videoPath,{int maxWidth,int maxHeight,int quality}) async {Completer<String> _completer Completer<String>(…

C++面向对象的第二大特性:继承

1.继承的介绍 首先容我先向大家举一个列子: 我这里定义了一个Person的类 class Person { protected:string name;int age;string address;}; 在这个基础上&#xff0c;我要定义一个关于Student , Worker 的类 由于Student Worker都具有Person类中的成员变量 &#xff0c…

力扣--字符串58.最后一个单词的长度

思路分析 初始化变量: num 用于记录当前单词的长度。before 用于记录上一个单词的长度。 遍历字符串: 如果字符不是空格&#xff0c;增加 num 计数。如果字符是空格&#xff0c;检查 num 是否为 0&#xff1a; 如果 num 为 0&#xff0c;说明之前没有记录到单词&#xff0c;所以…

android 水平居中对齐

在Android中&#xff0c;实现水平居中&#xff08;水平对齐&#xff09;通常涉及布局和控件的属性设置。这里有一些常见的方法来实现水平居中&#xff1a; 使用FrameLayout或LinearLayout: 使用FrameLayout时&#xff0c;你可以通过设置子视图的android:layout_gravity属性为ce…

二叉树的序列化---广义表

前言 个人小记 一、代码 #include<stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define key(n) (n)?(n->key):(-1) #define MAX_NODE 10typedef struct Node {int key;struct Node* lchild,*rchild; }Node;Node* init_…

嵌入式学习——3——UDP TFTP简易文件传输

tftp协议概述 简单文件传输协议&#xff0c;适用于在网络上进行文件传输的一套标准协议&#xff0c;使用UDP传输 特点&#xff1a; 是应用层协议 基于UDP协议实现 数据传输模式 octet&#xff1a;二进制模式&#xff08;常用&#xff09; mail&#xff1a;已经不再支持 TFTP通信…

Qt学习记录(14)线程

前言&#xff1a; 我的臀部已经翘到可以顶起一屁股债了 为什么要使用线程 什么时候用线程 复杂的数据处理 头文件.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer>//定时器头文件QT_BEGIN_NAMESPACE namespace Ui { class Widget; }…

Python+Flask+Pandas怎样实现任意时间范围的对比数据报表

话不多说,有图有源码: 1.上图 2.因为是低代码的,只能发重要有用的代码片段了 实现思路:1)获取指定时间范围内的数据:2)df合并 #----------年份替换----------------for syear in range(int(byear),int(eyear)1):start_datestr(syear)strbdate[4:]end_datestr(syear)stredate…

【大数据】MapReduce JAVA API编程实践及适用场景介绍

目录 1.前言 2.mapreduce编程示例 3.MapReduce适用场景 1.前言 本文是作者大数据系列专栏的其中一篇&#xff0c;前文我们依次聊了大数据的概论、分布式文件系统、分布式数据库、以及计算引擎mapreduce核心概念以及工作原理。 书接上文&#xff0c;本文将会继续聊一下mapr…

光源亮度检测应用笔记

光源亮度检测应用笔记 光电检测应用光电二极管等效模型和基本参数连接并联电阻&#xff08;RJ&#xff09;串联电阻&#xff08;RS&#xff09;结电容&#xff08;CJ&#xff09;暗电流&#xff08;ID&#xff09; 光电二极管电流-电压转换器无源光电二极管电流-电压转换器有源…

C++ Primer 第五版 第十三章 拷贝控制

当定义一个类时&#xff0c;我们显式地或隐式地指定在此类型的对象拷贝、移动、赋值和销毁时做什么。一个类通过定义五种特殊的成员函数来控制这些操作&#xff0c;包括&#xff1a;拷贝构造函数&#xff08;copy constructor&#xff09;、拷贝赋值运算符&#xff08;copy-ass…

柯桥职场人出差必备的商务口语-职场差旅口语提问篇

May I reconfirm my flight? 我可以确认我的班机15857575376吗&#xff1f; Where can I make a reservation? 我到哪里可以预订&#xff1f; Do I have to make a reconfirmation? 我还要再确认吗&#xff1f; Is there any discount for the USA Railpass? 火车通行…

node.js —— 解读http模块

目录 http模块&#xff1a; http模块的引入&#xff1a; 创建web服务器的基本步骤&#xff1a; web服务器的一些基本属性&#xff1a; 上述知识汇总案例&#xff1a; http模块&#xff1a; http模块的引入&#xff1a; const http require (http) 创建web服务器的基本步骤…

探索未来,与移动云共舞

探索未来&#xff0c;与移动云共舞 在数字化飞速发展的今天&#xff0c;云计算已经成为企业、政府乃至个人用户不可或缺的一部分。而在众多云服务提供商中&#xff0c;移动云凭借其独特的优势&#xff0c;为用户带来前所未有的体验。接下来&#xff0c;让我们一起走进移动云的世…

30w粉丝后我发现,普通人想靠自媒体逆袭,已经没有机会了

我一直是一个乐观的人&#xff0c;写文章也从不渲染悲观、焦虑的情绪&#xff0c;但今天这篇文章&#xff0c;可能有点悲观的气氛了。 我们都以为疫情之后生活会好起来&#xff0c;结果发现挣钱越来越难了。 自媒体也不例外&#xff0c;我最近本职工作在疯狂加班&#xff0c;…

LeetCode题练习与总结:从中序与后序遍历序列构造二叉树--106

一、题目描述 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], postorder [9,15,7,20,3] 输出…

等保三级云防火墙正版--免费部署满足要求

正版授权内部部署配置授权免费 1、超时退出 2、病毒防护 3、防火墙策略 4、密码复杂度和登录失败处理 5、特征库 点赞关注 私信获取 获取授权 Q 8-5-0-3-4-7-3-3-5

MCU复位电路

【单片机复位电路&#xff0c;巧妙的RC无处不在。】https://www.bilibili.com/video/BV1XW4y1571r?vd_source3cc3c07b09206097d0d8b0aefdf07958 左侧的RESET引脚正常情况下是低电平&#xff0c;是高电平复位&#xff1b;右侧的RESET引脚正常情况下是高电平&#xff0c;是低电…

List容器(1):List容器的常用接口使用

一、List容器的介绍 1.list是可以在常数范围内任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以实现前后双向迭代。 2.list的底层是双向链表结构&#xff0c;双向链表中每个元素储存在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后面…