2016-07-22 19 views
0

Ich habe pdfminer verwendet, um komplexe (Tabellen, Abbildungen) und sehr lange pdfs in HTML zu konvertieren. Ich möchte die Ergebnisse weiter analysieren (z. B. Tabellen extrahieren, Absätze usw.) und dann den Satz-Tokenizer von nltk verwenden, um weitere Analysen durchzuführen. Zu diesem Zweck möchte ich die HTML-Datei in eine Textdatei speichern, um herauszufinden, wie das Parsing durchgeführt wird. Leider hat mein Code nicht html zu txt schreiben:Schreiben Sie HTML-Tags in Textdatei in Python

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter 
from pdfminer.converter import HTMLConverter 
from pdfminer.converter import TextConverter 
from pdfminer.layout import LAParams 
from pdfminer.pdfpage import PDFPage 
from cStringIO import StringIO 


def convert_pdf_to_html(path): 
    rsrcmgr = PDFResourceManager() 
    retstr = StringIO() 
    codec = 'utf-8' 
    laparams = LAParams() 
    device = HTMLConverter(rsrcmgr, retstr, codec=codec, laparams=laparams) 
    fp = file(path, 'rb') 
    interpreter = PDFPageInterpreter(rsrcmgr, device) 
    password = "" 
    maxpages = 0 #is for all 
    caching = True 
    pagenos=set() 
    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True): 
     interpreter.process_page(page) 
    fp.close() 
    device.close() 
    str1 = retstr.getvalue() 
    retstr.close() 
    return str1 
    with open("D:/my_new_file.txt", "wb") as fh: 
     fh.write(str1) 

Außerdem druckt der Code den ganzen HTML-String in der Schale: Wie kann ich es vermeiden?

+0

@ Jean-François Fabre Thank you! Du hast Recht, jetzt funktioniert es gut. – In777

Antwort

0

Erstens, es sei denn es eine triviale Fehler ist,

die .txt Schreib geschieht nach der Rückkehr Funktion: TXT-Datei Schreib nie ausgeführt wird!

Dann Ausgabe an die Konsole zu unterdrücken, genau das zu tun, bevor Sie Ihre Routine ausgeführt wird:

import sys,os 
oldstdout = sys.stdout # save to be able to restore it later 
sys.stdout = os.devnull