-
2020-12-04 13:17:41
单词对象模型可以找到here。您的doc对象将包含这些属性,您可以使用它们执行所需的操作(请注意,我没有将此功能用于Word,因此我对对象模型的了解很少)。例如,如果要阅读文档中的所有单词,可以执行以下操作:for word in doc.Words:
print word
你会得到所有的单词。这些word项中的每一项都是Word对象(引用here),因此您可以在迭代期间访问这些属性。在您的情况下,以下是如何获得风格:
^{pr2}$
在带有单个标题1和普通文本的示例文档上,将打印:Heading 1
Heading 1
Heading 1
Heading 1
Heading 1
Normal
Normal
Normal
Normal
Normal
要将标题组合在一起,可以使用itertools.groupby。如下面的代码注释所述,您需要引用对象本身的str(),因为使用word.Style返回的实例不会与相同样式的其他实例正确分组:from itertools import groupby
import win32com.client as win32
# All the same as yours
word = win32.Dispatch("Word.Application")
word.Visible = 0
word.Documents.Open("testdoc.doc")
doc = word.ActiveDocument
# Here we use itertools.groupby (without sorting anything) to
# find groups of words that share the same heading (note it picks
# up newlines). The tricky/confusing thing here is that you can't
# just group on the Style itself - you have to group on the str().
# There was some other interesting behavior, but I have zero
# experience with COMObjects so I'll leave it there :)
# All of these comments for two lines of code :)
for heading, grp_wrds in groupby(doc.Words, key=lambda x: str(x.Style)):
print heading, ''.join(str(word) for word in grp_wrds)
该输出:Heading 1 Here is some text
Normal
No header
如果您将join替换为列表理解,您将得到以下结果(您可以在这里看到换行符):Heading 1 ['Here ', 'is ', 'some ', 'text', '\r']
Normal ['\r', 'No ', 'header', '\r', '\r']
更多相关内容 -
word提取文字以及所需jar.zip
2019-06-21 10:12:54java开发过程中,word文档文字提取所需要的jar包,可以提取word中文字,以及可以调用其他相关的poi,对应的api可以去相应官网学习和查询。 -
word提取文字所需jar
2018-08-23 16:17:09word提取文字所需的一系列jar,word提取文字所需的一系列jar -
WORD2EXCEL:从Word中获取所需的信息并将其传输到excel
2021-02-22 07:03:30WORD2EXCEL 从Word中获取所需的信息并将其传输到excel Word是Alexa语音记录。 该代码生成txt文件以过滤图片。 获取所需的信息并通过字体大小判断它们,以了解它是用户问题还是Alexa答案或时间戳。 将它们标记在txt... -
word快速提取纯数字
2021-07-25 08:53:12在Word中,如何在文本数字混排的表格中提取自己想要的数值呢?以便计算数值。这时候,可能很多人会使用复制、粘贴的方法一个个地提取出来?NO,NO,NO......这里给大家推荐1个技巧:Word查找和替换功能。比如说,快速...在Word中,如何在文本数字混排的表格中提取自己想要的数值呢?以便计算数值。这时候,可能很多人会使用复制、粘贴的方法一个个地提取出来?NO,NO,NO......这里给大家推荐1个技巧:Word查找和替换功能。
比如说,快速提取下表中的纯数字。
word快速提取纯数字
下面之所以介绍这两个方法,主要是因为它足够智能,针对的是没有规律的文本数字混排非常实用,希望大家看完之后都能在实际工作中运用起来。
具体操作方法如下:
第一步:首先将内容复制到Word文档,点击【开始】-【编辑】-【替换】按钮,或按【Ctrl+H】打开“查找和替换”对话框。
word快速提取纯数字
第二步:在“查找内容”文本框中输入[!0-9],在替换为文本框中不要输入内容。
word快速提取纯数字
第三步:点击”更多“按钮,勾选”使用通配符“复选框。
word快速提取纯数字
第四步:点击”全部替换“按钮,即可删除表格中的文本,保留数值,从而提取出数据。
word快速提取纯数字
除此之外,我们还可以利用Excel来快速提取数值。EXCEL本身就是专注于数据处理的工具,因此快速的处理大量的数据是 EXCEL 的精髓。而在 EXCEL 中,我认为最快速地提取法就是:【Ctrl+E】快速填充,真的超级方便。
具体操作方法如下:
第一步:首先,将Word表格数据复制到Excel表格中。
word快速提取纯数字
第二步:然后在一个或两个单元格输入你想要提取的数字,按【Enter】键确认。然后按【Ctrl+E】键就可以快速将剩下的数据按照第一个数据的规律,自动提取了。
word快速提取纯数字
技巧提示:【Ctrl+E】键的真正作用就是:按照一定的规律批量填充数据。但需注意的是:此方法在使用时有版本限制,目前仅支持在Office 2013版以上才能操作噢~~~
总结:通过上述两种方法,就能在文本数字混排的表格中提取自己想要的数字,以便于进行数据的汇总计算。
-
toTable:简单手动 Matlab 到 Excel 或 Word 功能:将数据从 Matlab 提取到 Excel 电子表格或 Word 表格。...
2021-05-30 12:11:48这可以通过找到 xlswrite 所需的范围所花费的时间来完成。 使用剪贴板代替 COM 接口。 非常适合快速将数据导入 Word 或 Excel 报告。 单个粘贴可以使用nxm数据集填充Word中的整个nxm表。 三个简单的方向: 从您... -
python批量提取word内信息
2021-01-21 17:38:08单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的信息打印出来 #coding:utf-8 import os import win32com from win32... -
query-knowledge-base-with-domain-specific-documents:从包含表格和文本中信息的Word文档中提取实体和关系...
2021-05-22 20:11:37构建知识图之后,下一步是获取所需的事实。 以包含癌症患者病史细节的文档为例。 然后,我们可能需要以下问题的答案以及更多信息: 什么时候诊断出癌症? 癌症的早期症状是什么? 病人的家庭历史如何? 对患者... -
如何使用JMeter从文件中提取数据
2021-01-11 20:40:20在性能测试方面,重用响应数据至关重要。几乎(如果不是全部!)负载测试场景假设您:从先前的响应中提取有趣的方面,并在下一个请求中重用它们(也称为相关)确保实际响应符合预期(又称断言)因此,如果您是性能测试...在性能测试方面,重用响应数据至关重要。几乎(如果不是全部!)负载测试场景假设您:
从先前的响应中提取有趣的方面,并在下一个请求中重用它们(也称为相关)
确保实际响应符合预期(又称断言)
因此,如果您是性能测试工程师,那么了解如何实现此关联和断言逻辑非常重要。幸运的是,BlazeMeter的知识库和JMeter博客已经有一些关于如何做到这一点的精彩文章。请查看以下内容:
这些都是基于文本的响应的好方法。但是,如果你需要从二进制文件中提取某些内容呢?例如,如果您需要验证作为HTTP请求采样器响应的Microsoft Word文档的内容,该怎么办?
这正是我将要在本文中解决的那种挑战。我将引导您完成查看和获取不同文档类型内容的过程,包括Microsoft Office,OpenOffice,ZIP存档和多媒体文件。
如何查看二进制文件的内容
在开始之前,请确保您知道如何使用JMeter的View Results Tree Listener- 因为它对请求和响应详细信息的可视化和检查非常有用。如果您不熟悉它,请查看本文:如何调试Apache JMeter脚本
现在让我们从一个非常基本的Microsoft Excel兼容电子表格开始。我拿了一个3.6KB的Microsoft Office Excel工作表。
如您所见,我们有一个文件test.xlsx,其中一个工作表标记为“Sheet1”。在单元格A1中,我们有字符串foo,在单元格B1中,我们有字符串条。
现在是时候使用'查看结果树监听器'来了解JMeter如何看待它。
我使用本地Apache Tomcat应用程序服务器获取“test.xlsx”文件,但JMeter的HTTP Request采样器也可以从本地文件系统中获取文件。只需在“协议”字段中输入“文件”,并在“路径”字段中提供完整路径(如下面的屏幕截图所示)。
以下是“查看结果树监听器”中“采样器结果”选项卡的外观:
这表明JMeter识别MIME类型(“application / vnd.openxmlformats-officedocument.spreadsheetml.sheet”)并报告正确的响应体大小为3656字节。
现在让我们看看“响应数据”选项卡:
这显示了ZIP存档的文本表示 - 由于其二进制特性而无法读取。
“查看结果树监听器”为您提供了有关如何显示响应数据的一些选项。它可以解析HTML,XML,JSON,提供Regex,CSS和XPath测试功能,还可以显示来自不同文档类型的内容(要做到这一点,你需要在drop中将默认选项“Text”更改为“Document” - 在左上角)
让我们切换到“文档”选项
现在我们可以看到JMeter的CLASSPATH中缺少“tika-app.jar”。要启用基于非文本的响应解析,您需要从Apache Tika下载页面下载tika-app - * .jar并将其放入JMeter安装的/ lib文件夹中。Asterisk(*)代表这个版本。最新的一个应该没问题但是如果它不起作用,在JMeter的/ lib文件夹中查找tika-core - * .jar和tika-parsers - * .jar文件并下载相关的tika-app.jar。
这里有些例子:
JMeter 2.12附带了tika-core-1.6.jar和tika-parsers-1.6.jar。因此,如果您使用的是JMeter 2.12,那么下载tika-app-1.6.jar是值得的
JMeter 2.13附带了tika-core-1.7.jar和tika-parsers-1.7.jar。在这种情况下,你需要tika-app-1.7.jar
话虽如此,我建议尽可能使用最新的JMeter版本,因为它将包含错误修复,性能改进和新功能。
将tika-app - * .jar添加到/ lib文件夹后,重启所有正在运行的JMeter实例实例非常重要,因为拾取外部.jar文件的过程不是动态的。这也适用于JMeter插件,JUnit测试等。
因此,让我们看看响应如何将tika-app.jar添加到JMeter的类路径中
现在我们可以看到工作表的标题以及A1和B1单元格的值。
如何访问二进制文件的内容
有时仅仅“看到”内容是不够的。如果您需要对提取的数据执行某些操作,例如将其用作下一个请求的参数或验证实际响应是否包含“foo”字符串,该怎么办?
让我们看看我们是否可以使用正则表达式提取器从Excel文档中获取内容。首先,让我们将整个响应保存到JMeter变量中。
如何将采样器响应保存到JMeter变量中
在这里,我将向您展示如何构造匹配整个响应的正则表达式。
请查看JMeter用户手册的正则表达式部分。在这里,我们可以识别元和控制字符,以开发一个匹配响应中所有内容的正则表达式:
() = grouping
(?s) = single line modifier
^ = line start
. = wild-card character
* = repetition
因此,将返回整个响应的正则表达式应如下所示:
(?s)(^.*)
并且整个Regular Expression Extractor Post Processor应如下所示:
现在我们想看到“响应”变量值。让我们在HTTP请求和视图结果树监听器之间添加一个Debug Sampler,然后再次运行测试。
这有点令人失望!:(
显然,正则表达式提取器不适用于已解析的响应,它只返回二进制文件内容,该内容不是非常有用或有用。但是如果JMeter显示Excel文件内容,则应该可以获得它。让我们更深入一点,看看JMeter的View Results Tree Listener如何显示Excel文件内容。
这里是:org.apache.jmeter.util.Document.String getTextFromDocument(byte [] document)。正如它在此处所述,您使用Apache Tika将多种文档(包括odt,ods,odp,doc(x),xls(x),ppt(x),pdf,mp3,mp4等)转换为文本。
将以下代码插入Beanshell的后处理器的“脚本”区域
importorg.apache.jmeter.util.Document;
String converted=Document.getTextFromDocument(data);
vars.put("response", converted);
View Code
哪里:
第1行 - 导入以解析Document类
第2行 - 调用getTextFromDocument方法
data - 这是一个预定义的Beanshell变量,它将父采样器响应保存为字节数组
将结果存储到转换的字符串对象中
创建JMeter变量响应并为其分配已转换字符串的值
有关Beanshell脚本域的更多信息以及更多有用的提示和技巧,请参阅如何使用BeanShell:JMeter最喜欢的内置组件指南。
现在让我们重试请求,看看这次是怎么回事。
如您所见,您现在可以将整个文件内容称为:$ {response} JMeter Variable。更重要的是:您可以将后处理器和断言应用于它。
如何解析二进制文件
最后,让我们看一下如何以更智能的方式处理二进制文件。我已经介绍了如何将二进制文件内容转换为JMeter变量,现在我将介绍如何访问单个元素。
让我们以示例Excel文件为例,从A1和B1单元格中提取值。
Apache Tika二进制文件包括几个能够处理文档文件类型,多媒体文件,存档等的库。它使用Apache POIAPI for Microsoft文件类型,因此我们需要使用Apache POI类来提取单元格内容来自Excel文档(请参阅有关使用Spreadsheets获取代码示例的POI快速指南以及有关如何执行此操作的更多信息)。
所以我们示例中的代码如下所示:
importorg.apache.jmeter.threads.JMeterVariables;importorg.apache.poi.ss.usermodel.Cell;importorg.apache.poi.ss.usermodel.Row;importorg.apache.poi.ss.usermodel.Sheet;importorg.apache.poi.ss.usermodel.Workbook;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;
InputStream in= newByteArrayInputStream(data);
Workbook wb= newXSSFWorkbook(in);
in.close();
Sheet sheet1= wb.getSheet("Sheet1");
Row row= sheet1.getRow(0);
Cell a1= row.getCell(0);
Cell b1= row.getCell(1);
vars.put("A1", a1.getStringCellValue());
vars.put("B1", b1.getStringCellValue());
View Code
这意味着我们的Beanshell PostProcessor将如下所示:
让我们再次运行测试,并在Debug Sampler中查看A1和B1的变量值
如您所见,有两个变量(不包括预定义的变量)
A1=foo
B1=bar
$ {A1}和$ {B1}可用作参数,后处理器的目标,断言等。
而已!!现在我们知道如何使用JMeter和Tika从Excel文档中提取数据。
这只是Apache Tika 300多种格式中的一种 - 但我认为我不能在一篇博文中涵盖所有这些格式!如果您使用的是Excel之外的其他内容,请查看Tika支持的格式页面以确定实现库和类。然后阅读文档以了解如何正确提取它。
-
python提取点云数据
2018-12-25 17:26:52这个代码用于提取点云,支持Python运行平台,很不错的一个代码。 -
如何利用Python批量将Word中的信息提取到Excel?
2021-01-12 09:00:00大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份Word(由于涉及文件私密所以文中的具体内容已做修改)一共有近2600条类似格式的表格细栏,每个栏目包括的信息有:日期发...大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份Word(由于涉及文件私密所以文中的具体内容已做修改)
一共有近2600条类似格式的表格细栏,每个栏目包括的信息有:
日期
发文单位
文号
标题
签收栏
需要提取其中加粗的这三项内容到Excel表格中存储,表格样式如下:
也就是需要将收文时间、文件标题、文号填到指定位置,同时需要将时间修改为标准格式,如果是完全手动复制和修改时间,依照一个条目10s的时间计算,一分钟可以完成6条,那么最快也需要:
而这类格式规整的文件整理非常适合用Python来执行,好的那么接下来请Python出场,必要的信息我在代码中以注释信息呈现。
首先使用Python将Word文件导入
# 导入需要的库docx from docx import Document # 指定文件存放的路径 path = r'C:\Users\word.docx' # 读取文件 document = Document(path) # 读取word中的所有表格 tables = document.tables
再把问题逐个划分,首先尝试获取第一张表第一个文件条目的三个所需信息
# 获取第一张表 table0 = tables[0]
仔细观察可以发现一个文件条目占据了3行,所以对表格全部行循环迭代时可以设步长为3
注意观察表格,按照row和cell把所需内容解析清楚
# 在全局放一个变量用来计数填序号 n = 0 for i in range(0, len(table0.rows) + 1, 3): # 日期 date = table0.cell(i, 1).text # 标题 title = table0.cell(i + 1, 1).text.strip() # 文号 dfn = tables[j].cell(i, 3).text.strip() print(n, date, tite, dfn)
接下来需要解决的是,时间我们获取的是
2/1
这种日/月
的形式。我们需要转化成YYYY-MM-DD
格式,而这利用到datetime
包的strptime
和strftime
函数:strptime:
解析字符串中蕴含的时间strftime:
转化成所需的时间格式
import datetime n = 0 for i in range(0, len(table0.rows) + 1, 3): # 日期 date = table0.cell(i, 1).text # 有的条目时间是空的,这里不做过多判别 if '/' in date: date = datetime.datetime.strptime(date, '%d/%m').strftime('2020-%m-%d') else: date = '-' # 标题 title = table0.cell(i + 1, 1).text.strip() # 文号 dfn = tables[j].cell(i, 3).text.strip() print(n, date, tite, dfn)
这样一张表的内容解析就完成了,注意这里用的是table[0]即第一张表,遍历所有的表加一个嵌套循环就可以,另外也可以捕获异常增加程序灵活性
n = 0 for j in range(len(tables)): for i in range(0, len(tables[j].rows)+1, 3): try: # 日期 date = tables[j].cell(i, 1).text if '/' in date: date = datetime.datetime.strptime(date, '%d/%m').strftime('2020-%m-%d') else: date = '-' # 标题 title = tables[j].cell(i + 1, 1).text.strip() # 文号 dfn = tables[j].cell(i, 3).text.strip() n += 1 print(n, date, title, dfn) except Exception as error: # 捕获异常,也可以用log写到日志里方便查看和管理 print(error) continue
信息解析和获取完成就可以导出了,用到的包是
openpyxl
from openpyxl import Workbook # 实例化 wb = Workbook() # 获取当前sheet sheet = wb.active # 设立表头 header = ['序号', '收文时间', '办文编号', '文件标题', '文号', '备注'] sheet.append(header)
在最内层解析循环的末尾加上如下代码即可
row = [n, date, ' ', title, dfn, ' '] sheet.append(row)
线程的最后记得保存
wb.save(r'C:\Users\20200420.xlsx')
运行时间在10分钟左右,大概离开了一会程序就执行结束了
最后附上完整代码,代码很简单,理清思路最重要
from docx import Document import datetime from openpyxl import Workbook wb = Workbook() sheet = wb.active header = ['序号', '收文时间', '办文编号', '文件标题', '文号', '备注'] sheet.append(header) path = r'C:\Users\word.docx' document = Document(path) tables = document.tables n = 0 for j in range(len(tables)): for i in range(0, len(tables[j].rows)+1, 3): try: # 日期 date = tables[j].cell(i, 1).text if '/' in date: date = datetime.datetime.strptime(date, '%d/%m').strftime('2020-%m-%d') else: date = '-' # 标题 title = tables[j].cell(i + 1, 1).text.strip() # 文号 dfn = tables[j].cell(i, 3).text.strip() n += 1 print(n, date, title, dfn) row = [n, date, ' ', title, dfn, ' '] sheet.append(row) except Exception as error: # 捕获异常,也可以用log写到日志里方便查看和管理 print(error) continue wb.save(r'C:\Users\20200420.xlsx')
先有收获,再点在看!
-
实用干货:7个实例教你从PDF、Word和网页中提取数据
2019-02-28 21:15:00导读:本文的目标是介绍一些Python库,帮助你从类似于PDF和Word DOCX 这样的二进制文件中提取数据。我们也将了解和学习如何从网络信息源(web feeds)(如RSS)中获取数据,以及利用一个库帮助解析HTML文本并从文档... -
VBA excel数据提取(1)——从某一列中提取所需内容区间,并赋值给另一列
2019-03-07 23:50:57笔者最近在做一个数据库项目,其中需要从EXCEL中提取关键字段。提取内容如下图所示,需要将图中加粗部分单独提出后进行去噪处理。如果通过word处理,文字量小的时候尚可实现,但几十万字的处理量很容易就造成假死。... -
Python自动办公(五)批量提取word信息至excel
2020-12-29 01:59:43通过批量提取word信息几个类型的实例,即可以巩固正则表达式的学习基础,也可以帮助一些有具体需求的朋友解决问题。下面的举的例子比较精简,非常适合入门,了解解决此类问题的基本思路和代码框架,主要是围绕for... -
【Python脚本】正则提取文本中的数据
2022-04-01 14:21:35正则表达式教程参考: 正则表达式 - 菜鸟教程 正则调试工具 正则可视化工具 # coding=utf8 import re import matplotlib.pyplot as plt # 文件名 filename = "E:/rb5/debug/hard_write/3840x3840-2.txt" ... -
word文档筛选功能在哪里
2021-07-31 02:18:15word的筛选在什么地方1.按快捷键Ctrl+A全选文档内容,然后快捷键Ctrl+H打开【查找和替换】窗口。2.鼠标单击【查找内容】文本框,输入“(3.然后点击【替换为】文本框,输入"\1\2" ,单击勾选下面【使用通配符】前的... -
【毕设过程记录】:python批量提取txt文本中所需文本并写入excel
2022-03-11 13:29:02我想要的文本是如图所示,宝可梦的外貌描述文本,由于原本的数据源结构并不是很稳定,而且也不是表格形式,因此在csdn上查了半天。 最原始的一行一行提取(不建议,未采用) fi = open("D:\python_learning\data\... -
如何从Word,Excel和PowerPoint文档中提取图像,文本和嵌入式文件
2020-09-10 20:27:42Say someone sent you a Word document with a lot of images, and you want you to save those images on your hard drive. You can extract images from a Microsoft Office document with a simpletrick. 假设有... -
利用python在word文档中查找关键字(支持多个文档和多个关键字)
2021-10-09 16:34:12#利用python查找word文档中的关键词,支持多个文档和多个关键词 ''' # 导入所需库 import os,re from docx import Document global ur ur = "D:/test_doc" #全局变量读取输入路径 # key_word = '模糊查询' #全局... -
教你怎样从word中提取图片以及缩小图片大小
2021-06-11 17:20:48在平常的工作中,有时候在word中看到一些比较好的图片,想保存下来,可是不知道从何保存?又想把这些图片上传到网上,可是图片太大了,所占空间较多,不适合上传,这个时候怎么办?我就教大家一个好方法,既能保存... -
Java 从word中提取文字信息(开发笔记)
2018-08-23 16:19:46所需jar包: 下载地址: https://download.csdn.net/download/qq_34246546/10622595 代码如下: package com.xc.test.utils; import java.io.File; import java.io.FileInputStream; import java.io.... -
小菜鸟的Python笔记001:将Word文档中数据汇总到Excel表格
2020-11-28 15:57:59将Word文档中数据汇总到Excel表格前言一、应用场景二、程序思路及准备工作思路如下:准备工作:三、程序代码1、主程序2、获取Word文档列表3、提取文档内数据4、导入到Excel表格四、遇到的问题1、错误AttributeError:... -
在word中快速得到数学公式
2022-03-18 15:25:23动机 对于大多数的数学公式来说是...word:这个都要有的吧,以为就是想在word中写公式嘛 注意 安装mathtype的时候,要把office全家桶都关闭!!!不然装不上 安装完成后,Office应该不会出现加载项,以下为解决办法 -
基于深度学习的文本数据特征提取方法之Word2Vec
2019-09-26 14:56:23点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”作者:Dipanjan (DJ) Sarkar编译:ronghuaiyang导读介绍了基于深度学习的文本数据特征... -
Java项目中利用Freemarker模板引擎导出--生成Word文档
2020-06-24 18:45:41应邀写的一篇文章:Java项目中利用Freemarker模板引擎导出--生成Word文档 在项目中难免和各种数据报表打交道,如导出XX申请表,登记表,推荐表之类。就可以通过现有信息导出Word文档。基于Java语言来导出Word文档的... -
【Python办公自动化】根据excel中数据批量生成word文档(适用劳动合同、质检报告、通知书等应用场景)
2020-09-30 15:02:552、制作XX方案或XX报告,Word文档布局和格式统一,只是需填充的内容信息来源于Excel。 3、制作通知书,从excel表格中将每个人的数据分别填入到docx通知书中。 4、其他各式各样的场景,反正都满足同样的条件,就是:*... -
python读取word表格 python中如何将word表格内的内容进行替换
2021-01-13 19:55:15用python对word文档进行搜索和读取,要分享读取docx文件中某个关键字文本最好是全部都读取到程序中,在程序中进行判断。 本文实例讲述了Python实现批量读取word中表格信息的方法。分享给大家...