精华内容
下载资源
问答
  • 在word文档中提取所需数据
    千次阅读
    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']

    更多相关内容
  • java开发过程word文档文字提取所需要的jar包,可以提取word中文字,以及可以调用其他相关的poi,对应的api可以去相应官网学习和查询。
  • word提取文字所需jar

    2018-08-23 16:17:09
    word提取文字所需的一系列jar,word提取文字所需的一系列jar
  • WORD2EXCEL 从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查找和替换功能。

    比如说,快速提取下表中的纯数字。

    c0599e65c0dae5aa693fc1be7f74a2a2.png

    word快速提取纯数字

    下面之所以介绍这两个方法,主要是因为它足够智能,针对的是没有规律的文本数字混排非常实用,希望大家看完之后都能在实际工作中运用起来。

    具体操作方法如下:

    第一步:首先将内容复制到Word文档,点击【开始】-【编辑】-【替换】按钮,或按【Ctrl+H】打开“查找和替换”对话框。

    86be415b587e9615205b4e6bf98e8acc.png

    word快速提取纯数字

    第二步:在“查找内容”文本框中输入[!0-9],在替换为文本框中不要输入内容。

    8ec335cdde45d3213c23a94ecf7dc1fa.png

    word快速提取纯数字

    第三步:点击”更多“按钮,勾选”使用通配符“复选框。

    d95bb3280a5754d942827a0ea5444247.png

    word快速提取纯数字

    第四步:点击”全部替换“按钮,即可删除表格中的文本,保留数值,从而提取出数据。

    4d22a05e720a6352c5c1e73a1c43942a.png

    word快速提取纯数字

    除此之外,我们还可以利用Excel来快速提取数值。EXCEL本身就是专注于数据处理的工具,因此快速的处理大量的数据是 EXCEL 的精髓。而在 EXCEL 中,我认为最快速地提取法就是:【Ctrl+E】快速填充,真的超级方便。

    具体操作方法如下:

    第一步:首先,将Word表格数据复制到Excel表格中。

    d7a35bb5fedcfe9d31d298bc0ae55c28.png

    word快速提取纯数字

    第二步:然后在一个或两个单元格输入你想要提取的数字,按【Enter】键确认。然后按【Ctrl+E】键就可以快速将剩下的数据按照第一个数据的规律,自动提取了。

    7a0527abee9e9ede8b099c9d3e952354.gif

    word快速提取纯数字

    技巧提示:【Ctrl+E】键的真正作用就是:按照一定的规律批量填充数据。但需注意的是:此方法在使用时有版本限制,目前仅支持在Office 2013版以上才能操作噢~~~

    总结:通过上述两种方法,就能在文本数字混排的表格中提取自己想要的数字,以便于进行数据的汇总计算。

    展开全文
  • 这可以通过找到 xlswrite 所需的范围所花费的时间来完成。 使用剪贴板代替 COM 接口。 非常适合快速将数据导入 Word 或 Excel 报告。 单个粘贴可以使用nxm数据集填充Word中的整个nxm表。 三个简单的方向: 从您...
  • 单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的信息打印出来 #coding:utf-8 import os import win32com from win32...
  • 构建知识图之后,下一步是获取所需的事实。 以包含癌症患者病史细节的文档为例。 然后,我们可能需要以下问题的答案以及更多信息: 什么时候诊断出癌症? 癌症的早期症状是什么? 病人的家庭历史如何? 对患者...
  • 性能测试方面,重用响应数据至关重要。几乎(如果不是全部!)负载测试场景假设您:从先前的响应中提取有趣的方面,并在下一个请求重用它们(也称为相关)确保实际响应符合预期(又称断言)因此,如果您是性能测试...

    在性能测试方面,重用响应数据至关重要。几乎(如果不是全部!)负载测试场景假设您:

    从先前的响应中提取有趣的方面,并在下一个请求中重用它们(也称为相关)

    确保实际响应符合预期(又称断言)

    因此,如果您是性能测试工程师,那么了解如何实现此关联和断言逻辑非常重要。幸运的是,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运行平台,很不错的一个代码。
  • 大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份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包的strptimestrftime函数:

    • 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')

    先有收获,再点在看!

    展开全文
  • 导读:本文的目标是介绍一些Python库,帮助你从类似于PDF和Word DOCX 这样的二进制文件中提取数据。我们也将了解和学习如何从网络信息源(web feeds)(如RSS)获取数据,以及利用一个库帮助解析HTML文本并从文档...
  • 笔者最近做一个数据库项目,其中需要从EXCEL中提取关键字段。提取内容如下图示,需要将图加粗部分单独提出后进行去噪处理。如果通过word处理,文字量小的时候尚可实现,但几十万字的处理量很容易就造成假死。...
  • 通过批量提取word信息几个类型的实例,即可以巩固正则表达式的学习基础,也可以帮助一些有具体需求的朋友解决问题。下面的举的例子比较精简,非常适合入门,了解解决此类问题的基本思路和代码框架,主要是围绕for...
  • 正则表达式教程参考: 正则表达式 - 菜鸟教程 正则调试工具 正则可视化工具 # coding=utf8 import re import matplotlib.pyplot as plt # 文件名 filename = "E:/rb5/debug/hard_write/3840x3840-2.txt" ...
  • word的筛选什么地方1.按快捷键Ctrl+A全选文档内容,然后快捷键Ctrl+H打开【查找和替换】窗口。2.鼠标单击【查找内容】文本框,输入“(3.然后点击【替换为】文本框,输入"\1\2" ,单击勾选下面【使用通配符】前的...
  • 我想要的文本是如图示,宝可梦的外貌描述文本,由于原本的数据源结构并不是很稳定,而且也不是表格形式,因此csdn上查了半天。 最原始的一行一行提取(不建议,未采用) fi = open("D:\python_learning\data\...
  • Say 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文档中的关键词,支持多个文档和多个关键词 ''' # 导入所需库 import os,re from docx import Document global ur ur = "D:/test_doc" #全局变量读取输入路径 # key_word = '模糊查询' #全局...
  • 平常的工作,有时候在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....
  • Word文档中数据汇总到Excel表格前言一、应用场景二、程序思路及准备工作思路如下:准备工作:三、程序代码1、主程序2、获取Word文档列表3、提取文档内数据4、导入到Excel表格四、遇到的问题1、错误AttributeError:...
  • 动机 对于大多数的数学公式来说是...word:这个都要有的吧,以为就是想在word中写公式嘛 注意 安装mathtype的时候,要把office全家桶都关闭!!!不然装不上 安装完成后,Office应该不会出现加载项,以下为解决办法
  • 点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”作者:Dipanjan (DJ) Sarkar编译:ronghuaiyang导读介绍了基于深度学习的文本数据特征...
  • Java项目利用Freemarker模板引擎导出--生成Word文档

    千次阅读 多人点赞 2020-06-24 18:45:41
    应邀写的一篇文章:Java项目利用Freemarker模板引擎导出--生成Word文档 项目难免和各种数据报表打交道,如导出XX申请表,登记表,推荐表之类。就可以通过现有信息导出Word文档。基于Java语言来导出Word文档的...
  • 2、制作XX方案或XX报告,Word文档布局和格式统一,只是填充的内容信息来源于Excel。 3、制作通知书,从excel表格中将每个人的数据分别填入到docx通知书。 4、其他各式各样的场景,反正都满足同样的条件,就是:*...
  • 用python对word文档进行搜索和读取,要分享读取docx文件某个关键字文本最好是全部都读取到程序程序进行判断。 本文实例讲述了Python实现批量读取word表格信息的方法。分享给大家...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,480
精华内容 11,792
关键字:

在word文档中提取所需数据