2009-05-26 150 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