2009-05-26 99 views
1

可能重复:
Reading/Writing MS Word files in PythonPython中的MS Word

我在寻找到一个需求管理系统(如requiste亲 - Rational Rose的) - 并需要通过MS阅读Word文档搜索特定标签 - 在Windows或Apple OS环境中。是否有任何已知的框架(我找不到任何) - 或建议的方法?

只是为了增加一些说明 - 这不是一次性阅读,我会在每次更新文档时检查文档,并在需求特定区域执行CRUD。

+0

玩弄 - 我能够打开和打印Word文档 进口win32com.client 字= win32com.client.Dispatch( 'Word.Application') 文档的内容= word.Documents.Open( 'C:\\ Test.doc的') WORDINFO = doc.Content() 打印WORDINFO doc.Close 的一个步骤在正确的方向 – meade 2009-05-26 19:47:41

回答

4

首先,将其从本机Word(.doc)格式中取出。

  • 做一个“另存为XML”,并坚持你的用户与该文件,而不是.doc文件工作。他们几乎不会注意到其中的差异 - 除了文件更大。

    使用lxmlelement tree解析XML并找到标题,部分,段落和列表。

  • 在进行分析之前,您还可以执行“另存为HTML”。这和XML版本一样好。 HTML版本对用户来说并不是那么容易,但是,只有在分析之前才能做到这一点。

    使用Beautiful Soup解析HTML并找到标题,部分,段落和列表。

一旦你有一个解析结构(XML或HTML),你可以分析文档寻找特定的标签。

0

如果您有一点现金,您可以购买Aspose.Word的Java API。有了它,你可以通过编程访问和处理任何Word文档

+0

如果准备使用Java,docx4j也是一种选择。 – JasonPlutext 2009-10-30 22:37:40

0

我知道这是一个Python的问题,但...

在Windows上,你应该使用VBScript(VBA宏)和OLE到programmically访问Word。

Examples | How-tos | Automating Word using OLE

MacOSX上使用VBA的办公旧版本和AppleScript 2008

Article

用VBA你有任何修改,将文档或执行一个自动的“另存为”将选择获得更容易处理格式的数据(虽然被警告它的HTML输出是非常糟糕)。

我强烈建议住来自第三方库/产品送人,即使你不喜欢的VBScript。格式是太复杂,无证和精确的外部不一致处理。使用OpenOffice/StarOffice是证明了这一点。他们一直在努力多年,仍然没有得到准确的.doc解析,更不用说.DOCX。是的,它一般起作用,但是一旦开始尝试在Word之外编程修改它们,就会产生无法量化的文档损坏风险。你应该可以使用os.system从Python中调用VBscript。我认为这个解释器是wscript.exe,但是我不认为这一点。这可能工作虽然:

os.system('start script.vb') 
+0

DOCX不是更容易,因为它更接近*实际* XML? 2007年以前的“MS”XML没有统计。这也是一个“开放标准”! ;) – 2009-05-26 15:16:09

2

您可以建立在openoffice.org读取Word文档的能力。 的Python-UNO桥允许从Python脚本语言使用标准OpenOffice.org API。使用Python-UNO并在您的机器上使用openoffice的相关部分时,读取大多数Word文档应该很简单。

2

假设你在windows上并安装了Word,你可以使用COM控制python中的Word - 参见Python for win32在Linux上,你可以使用OpenOffice做同样的事情。

或者有一串字符串提取用于Word两者的Win32或Linux的,你就可以使用正常的蟒蛇正则表达式的工具。

看到这个问题extracting text from MS word files in python