2017-10-04 2 views
0

Wie kann ich ein Word-Dokument mit Python suchen, um den Absatztext nach der Suche und dem Abgleich der Absatzüberschrift zu extrahieren, z. B. "1.2 Zusammenfassung des Broadspectrum Angebots".Extrahieren von Absatztext in Python

zB siehe unten für ein Dokumentationsbeispiel, ich möchte grundsätzlich den folgenden Text erhalten "Eine Zusammenfassung unseres Angebotes zur Lieferung des Leistungsumfangs wie in den Ausschreibungsunterlagen beschrieben ist unten aufgeführt. Bitte beachten Sie die verschiedenen Bedingungen Bedingungen unseres Angebots, wie hierin beschrieben. Bitte beachten Sie auch die Kostenaufschlüsselung finden "

1. Executive Summary 

1.1 Summary of Services 
Energy Savings (Carbon Emissions and Intensity Reduction) 
Upgrade Economy Cycle on Level 2,5,6,7 & 8, replace Chilled Water Valves on Level 6 & 8 and install lighting controls on L5 & 6.. 

1.2 Summary of Broadspectrum Offer 

A summary of our Offer to deliver the Scope of Work as outlined in the tender documents is provided below. Please refer to the various terms and conditions of our Offer as detailed herein. 
Please also find the cost breakdown 

beachten Sie, dass die Überschriften Nummer Änderung von doc doc und wollen nicht auf diese verlassen können, um so mehr will ich verlassen auf den Suchtext in der Überschrift

bis jetzt kann ich die Dokumente aber nur einen Anfang suchen.

filename1 = "North Sydney TE SP30062590-1 HVAC - Project Offer - Rev1.docx" 

from docx import Document 

document = Document(filename1) 
for paragraph in document.paragraphs: 
    if 'Summary' in paragraph.text: 
     print paragraph.text 
+0

Wird Ihr Dokument jemals etwas nach dem '1.2 Zusammenfassung ...' Absatz haben? Und wird 'Summary of Broadspectrum Offer' immer mit' 1.2' gekennzeichnet? – sadmicrowave

+0

Sie sollten die Re-Bibliothek verwenden, um Regex-Ausdrücke zu schreiben. Es gibt umfangreiche Informationen über SO und das Internet. –

+0

Vielleicht kann dies helfen: https://stackoverflow.com/questions/40388763/extraction-headings-text-from-word-doc –

Antwort

1

Hier ist eine vorläufige Lösung (ausstehende Antworten auf meine Kommentare zu Ihrem Beitrag oben). Der Ausschluss zusätzlicher Paragraphen nach der Summary of Broadspectrum Offer Sektion ist noch nicht berücksichtigt. Wenn das nötig ist, werden Sie höchstwahrscheinlich eine kleine Regex-Übereinstimmung benötigen, um herauszufinden, ob Sie einen anderen Header-Abschnitt mit einer 1.3 (etc.) gefunden haben, und das Verständnis zu stoppen, wenn dies der Fall ist. Lassen Sie mich wissen, ob dies eine Voraussetzung ist.

bearbeiten: konvertiert die print() aus Liste Verständnis Methode zur Standard for Schleife, in Reaktion auf Anton vBR ‚s Kommentar unten.

from docx import Document 

document = Document("North Sydney TE SP30062590-1 HVAC - Project Offer - Rev1.docx") 

# Find the index of the `Summary of Broadspectrum Offer` syntax and store it 
ind = [i for i, para in enumerate(document.paragraphs) if 'Summary of Broadspectrum Offer' in para.text] 
# Print the text for any element with an index greater than the index found in the list comprehension above 
if ind: 
    for i, para in enumerate(document.paragraphs): 
     if i > ind[0]: 
      print(para.text)  

[print (para.text) für i Abs in enumerate (document.paragraphs), wenn ind und i> ind [0]]

>> A summary of our Offer to deliver the Scope of Work as outlined in the tender documents is provided below. 
Please refer to the various terms and conditions of our Offer as detailed herein. 
Please also find the cost breakdown 

Auch hier ist ein weiterer Beitrag, der kann help solution ein anderer Ansatz, der einen heading Typ mit Absatzmetadaten erkennen soll: Extracting headings' text from word doc

+0

Die Zeilen, die Sie gebucht haben, sind lang und die Verwendung von print() in einem Listenverständnis ist nicht wirklich zu empfehlen . –

+0

Ich habe das Listenverständnis mit der Funktion 'print()' entfernt. Es war einfach ein sauberer Liner, um zu drucken, was gewünscht wurde, aber Sie haben Recht, es ist nicht die beste Praxis. – sadmicrowave