当前位置: 首页 > 面试题库 >

不使用COM /自动化从Word文档中提取文本的最佳方法?

秦凯定
2023-03-14
问题内容

有没有一种合理的方法可以从不依赖COM自动化的Word文件中提取纯文本?(这是在非Windows平台上部署的Web应用程序的一项功能-
在这种情况下是不可协商的。)

Antiword似乎是一个合理的选择,但似乎已被放弃。

Python解决方案将是理想的选择,但似乎不可用。


问题答案:

我为此使用catdoc或反字词,无论给出的结果是最容易解析的。我已经将其嵌入到python函数中,因此在解析系统(以python编写)中易于使用。

import os

def doc_to_text_catdoc(filename):
    (fi, fo, fe) = os.popen3('catdoc -w "%s"' % filename)
    fi.close()
    retval = fo.read()
    erroroutput = fe.read()
    fo.close()
    fe.close()
    if not erroroutput:
        return retval
    else:
        raise OSError("Executing the command caused an error: %s" % erroroutput)

# similar doc_to_text_antiword()

-w切换到catdoc会关闭换行,BTW。



 类似资料:
  • 我需要循环一些word文档,并从word文档中提取图像,并将其保存在单独的文件夹中。我尝试过将它们保存为超文本标记语言文档的方法,但它不太适合我的需求。 现在,我使用inlineshapes对象循环浏览图像,然后将它们复制粘贴到publisher文档上,然后将它们保存为图像。但是,在运行脚本时,我会遇到运行时自动化错误。对于使用Publisher运行时库,我尝试了早期绑定和晚期绑定,但都遇到了错误

  • 正如您在word文档中看到的,有许多带有要点的问题。现在,我正在尝试使用apache POI从文件中提取每个段落。这是我当前的代码 上述方法的问题在于它打印的是每一行而不是段落。此外,项目符号也从提取的字符串中删除。返回一个纯字符串。 谁能解释一下我做错了什么。也请建议如果你有一个更好的想法来解决它。

  • 问题内容: 为了在python中处理MS Word文件,有python win32扩展名,可以在Windows中使用。我该如何在linux中做同样的事情?有图书馆吗? 问题答案: 您可以对antiword进行子过程调用。Antiword是一个Linux命令行实用程序,用于从word doc中转储文本。适用于简单文档(显然会丢失格式)。它可以通过apt(可能是RPM)获得,也可以自己编译。

  • 问题内容: 提取括号之间的文本集的最佳/最有效方法是什么?假设我想以最有效的方式从字符串“忽略除此(文本)之外的所有内容”中获取字符串“ text”。 到目前为止,我想出的最好的办法是: 有一个更好的方法吗?我知道通常使用正则表达式的效率通常较低,但是除非我可以减少函数调用的次数,否则这也许是最好的方法?有什么想法吗? 问题答案: 我只是做一个正则表达式,并克服它。除非您进行了足够多的迭代以至于成

  • 问题内容: 这是示例xml文档: 我想提取文本而不指定元素,我该怎么做,因为我有10个这样的文档。我想要这样做是因为我的问题是用户正在输入一个我不知道的单词,必须在其各自文本部分的所有10个xml文档中进行搜索。为此,我应该在不知道元素的情况下知道文本的位置。所有这些文档都不同的另一件事。 请帮忙!! 问题答案: 您可以简单地去除所有标签: 但是,如果您只想在Linux中搜索文件中的某些文本,则可

  • 本文向大家介绍PHP读取word文档的方法分析【基于COM组件】,包括了PHP读取word文档的方法分析【基于COM组件】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP读取word文档的方法。分享给大家供大家参考,具体如下: php开发 过程中可能会word文档的读取问题,这里可以利用com组件来完成此项操作 一、先开启php.ini的COM,操作如下 1. 2. 二、开启之后就可