可能重複:
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