如何使用Python解析Word Doc中的文本?

时间:2010-02-14 15:53:52

标签: python regex ms-word screen-scraping

当您尝试打开MS Word文档或大多数Windows文件格式时,您会看到下面给出的乱码,实际文本间歇性地断开。我需要提取进入的文本并想忽略这些乱码 - 这就像下面给出的那样。如何仅提取重要的文本,并忽略其余的内容。请指教。

以下是单词doc的open("sample.doc",r").read()示例。感谢

00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00In an Interesting news,his is the first time we polled Indian channel community for their preferred memory supplier. Transcend came a close second, was seen to be more popular among class A city based resellers, was also the most recalled memory brand among customers according to resellers. However Transcend channels complained of parallel imports and constant unavailability of the products in grey x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x

5 个答案:

答案 0 :(得分:3)

看起来最可行的工具,特别是如果你需要一个全python解决方案,OleFileIO

答案 1 :(得分:1)

doc是二进制格式,它不是标记语言或其他东西。 规格:http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx

答案 2 :(得分:0)

  

没有通用的提取原因   来自每种文件格式的信息。   你需要知道要知道的格式   如何提取信息。

只是想先说明一下。所以你应该寻找的是能够转换/提取你想要的信息的库和软件。正如Ofir MicroSoft所提到的,它们的格式也有工具。

但是如果你不能这样做并想要在文件中看到文本可见的机会,你认为有趣的是你可以进行正常读取并查找将构建文本的字节序列。接下来的问题是,在寻找文本时,我应该支持哪些语言/字符集。它是多字节文本吗?

简单的开始是遍历数据并查找[a-zA-z0-9_-]的序列以查找文本。但是这个词可能是多字节的。所以你应该将双字节扫描为一个字符。

注意:某些新格式(如open office和docx)是压缩容器中的多个文件。因此,您需要先解压缩文件,然后在查找文本后扫描XML文档。

答案 3 :(得分:0)

Word doc是一种压缩格式。您需要先解压缩以获取真实数据(尝试在像winrar这样的程序中打开doc文件,您会看到它包含多个文件。

它甚至似乎是XML,所以阅读格式不应该那么难,虽然我不确定你是否以这种方式得到所有数据。

答案 4 :(得分:0)

我遇到了类似的问题,需要查询数百个Word文档。我将Word文件转换为文本文件并使用普通文本解析工具。工作得很好。