2016-04-11 63 views
1

我有一個字(.DOCX)文件具有標題/標題和標題低於其相應的表(.DOCX)提取表中的標題:從Word使用Python

1.1.1.1 Table_Title_001 

Name  Gautham 

College  Oxford 

University Cambridge 

1.1.1.2 Table_Title_002 

Name  Krishnan 

College  Harvard 

University Stanford 

是否有任何如何使用Python提取每個表的標題? win32com或python-docx的文檔對此不太清楚。

+0

在程序運行的機器上是否安裝了Word?或者您是否在尋找可以運行的解決方案,例如,在Linux服務器上運行? –

+0

@Doc Brown Word安裝在我的機器上。我期望使用任何外部Python模塊(如win32com.client API或Python-docx)來提取表格標題。提前致謝。 – gautham

+0

那麼你的一般策略應該是:谷歌如何做到你想要的VBA。使用win32com將解決方案移植到Python(請參閱http://docs.activestate.com/activepython/2.4/pywin32/html/com/win32com/HTML/QuickStartClientCom.html)。注意Word的COM API和VBA API幾乎完全相同。 –

回答

1

我現在不在Windows上,所以我無法在本地進行測試,但Word表格有Title property,這似乎是您要查找的內容。

使用win32com,它會看起來像:

from win32com import client 
word = client.Dispatch("Word.Application") 
document = word.Documents.Open(path_to_docx) 

titles = [table.Title for table in document.Tables] 
+0

只要它不知道使用哪種技術或模塊訪問Word文檔,此答案不是很有用。這是使用COM自動化(需要安裝Word)嗎?或者python-docx?或者完全不同的東西? –

+0

雖然OP使用'win32com',但你是對的,我會編輯我的答案以增加一些清晰度。 –

+0

Table.Title屬性的Word是沒有用的(即使閱讀後我甚至無法理解它,但我用win32com客戶端使用ListParagraphs來完成相同!不過,感謝您的幫助@ magni- – gautham

0

使用Python,DOCX,這些都是很容易讀取。在python-docx中,這些實際上不是標題,而是段落。從我開始,我會建議看看this site,以便了解它是如何工作的。

from docx import Document 
doc = Document("wordfile.docx") 
for para in doc.paragraphs: 
    print(para.text) 

這會打印出當前文檔中的每個段落。如果你只有文件中的標題和表格,這對你來說很好用