可能重复:
Reading/Writing MS Word files in PythonPython中的MS Word
我在寻找到一个需求管理系统(如requiste亲 - Rational Rose的) - 并需要通过MS阅读Word文档搜索特定标签 - 在Windows或Apple OS环境中。是否有任何已知的框架(我找不到任何) - 或建议的方法?
只是为了增加一些说明 - 这不是一次性阅读,我会在每次更新文档时检查文档,并在需求特定区域执行CRUD。
可能重复:
Reading/Writing MS Word files in PythonPython中的MS Word
我在寻找到一个需求管理系统(如requiste亲 - Rational Rose的) - 并需要通过MS阅读Word文档搜索特定标签 - 在Windows或Apple OS环境中。是否有任何已知的框架(我找不到任何) - 或建议的方法?
只是为了增加一些说明 - 这不是一次性阅读,我会在每次更新文档时检查文档,并在需求特定区域执行CRUD。
首先,将其从本机Word(.doc
)格式中取出。
做一个“另存为XML”,并坚持你的用户与该文件,而不是.doc
文件工作。他们几乎不会注意到其中的差异 - 除了文件更大。
使用lxml或element tree解析XML并找到标题,部分,段落和列表。
在进行分析之前,您还可以执行“另存为HTML”。这和XML版本一样好。 HTML版本对用户来说并不是那么容易,但是,只有在分析之前才能做到这一点。
使用Beautiful Soup解析HTML并找到标题,部分,段落和列表。
一旦你有一个解析结构(XML或HTML),你可以分析文档寻找特定的标签。
如果您有一点现金,您可以购买Aspose.Word的Java API。有了它,你可以通过编程访问和处理任何Word文档
如果准备使用Java,docx4j也是一种选择。 – JasonPlutext 2009-10-30 22:37:40
我知道这是一个Python的问题,但...
在Windows上,你应该使用VBScript(VBA宏)和OLE到programmically访问Word。
Examples | How-tos | Automating Word using OLE
MacOSX上使用VBA的办公旧版本和AppleScript 2008
用VBA你有任何修改,将文档或执行一个自动的“另存为”将选择获得更容易处理格式的数据(虽然被警告它的HTML输出是非常糟糕)。
我强烈建议住来自第三方库/产品送人,即使你不喜欢的VBScript。格式是太复杂,无证和精确的外部不一致处理。使用OpenOffice/StarOffice是证明了这一点。他们一直在努力多年,仍然没有得到准确的.doc解析,更不用说.DOCX。是的,它一般起作用,但是一旦开始尝试在Word之外编程修改它们,就会产生无法量化的文档损坏风险。你应该可以使用os.system从Python中调用VBscript。我认为这个解释器是wscript.exe,但是我不认为这一点。这可能工作虽然:
os.system('start script.vb')
DOCX不是更容易,因为它更接近*实际* XML? 2007年以前的“MS”XML没有统计。这也是一个“开放标准”! ;) – 2009-05-26 15:16:09
您可以建立在openoffice.org读取Word文档的能力。 的Python-UNO桥允许从Python脚本语言使用标准OpenOffice.org API
。使用Python-UNO
并在您的机器上使用openoffice的相关部分时,读取大多数Word文档应该很简单。
使用Visual Studio Tools for Office (VSTO),可以从任何.NET
语言编写Word
脚本。所述How to: Search for Text in Documents示例显示C#
和3210代码,但IronPython
也可以调用相同.NET
方法。
如果您已准备好使用IronPython(没有与Mac等效),则这可能是一个Windows专用解决方案,用于搜索Word
文档。
假设你在windows上并安装了Word,你可以使用COM控制python中的Word - 参见Python for win32在Linux上,你可以使用OpenOffice做同样的事情。
或者有一串字符串提取用于Word两者的Win32或Linux的,你就可以使用正常的蟒蛇正则表达式的工具。
玩弄 - 我能够打开和打印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