2016-04-11 2 views
1

J'ai un document Word (.docx) qui a titre/rubriques et leurs tableaux correspondants ci-dessous les titres comme indiqué ci-dessous:titre du tableau Extraction à partir de Word (.docx) en utilisant 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 

Y at-il façon d'extraire le titre de chaque table en utilisant Python? La documentation pour win32com ou python-docx n'est pas très claire à ce sujet.

+0

Word est-il installé sur la machine sur laquelle le programme s'exécute? Ou cherchez-vous une solution qui pourrait fonctionner, par exemple, sur un serveur Linux? –

+0

@Doc Brown Word est installé sur ma machine. J'attends de l'aide pour extraire le titre de la table en utilisant des modules Python externes comme l'API win32com.client ou Python-docx. Merci d'avance. – gautham

+0

Ensuite, votre stratégie générale devrait être: google pour savoir comment faire ce que vous voulez dans VBA. Port la solution à Python en utilisant win32com (voir http://docs.activestate.com/activepython/2.4/pywin32/html/com/win32com/HTML/QuickStartClientCom.html). Remarque L'API COM de Word et l'API VBA sont presque identiques. –

Répondre

1

Je ne suis pas sur Windows pour le moment, donc je ne peux pas le tester localement, mais les tables Word ont un Title property qui semble être ce que vous cherchez.

En utilisant win32com, il avait l'air quelque chose comme:

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

Cette réponse n'est pas très utile tant qu'elle ne dit pas quelle technologie ou quel module est utilisé pour accéder au mot doc. Est-ce en utilisant COM automation (qui nécessite Word pour être installé)? Ou python-docx? Ou quelque chose de complètement différent? –

+0

Je pensais que l'OP utilisait 'win32com' mais vous avez raison, je vais éditer ma réponse pour ajouter de la clarté. –

+0

Table.Title propriété de Word n'a pas été utile (je ne pouvais pas le comprendre même après avoir lu le, mais j'ai utilisé ListParagraphs avec le client win32com pour accomplir le même! Néanmoins, appréciez votre aide @ magni- – gautham

0

En utilisant python-docx, ceux-ci sont très facilement lisibles. En python-docx ce ne sont pas des titres, ce sont des paragraphes. Je commencerais par recommander this site afin que vous compreniez comment cela fonctionne.

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

Ceci imprimera tous les paragraphes du document actuel. Si vous avez seulement des titres et des tables dans votre fichier, cela fonctionnera bien pour vous