将html标签写入python中的文本文件

问题描述:

我已经使用pdfminer将复杂(表格,图形)和非常长的pdf转换为html。我想进一步解析结果(例如提取表格,段落等),然后使用nltk中的句子标记器做进一步的分析。为此,我想将html保存为文本文件以找出如何执行解析。不幸的是我的代码不会写HTML为TXT:将html标签写入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) 

此外,代码打印在shell整个HTML字符串:我怎样才能避免呢?

+0

@让·弗朗索瓦·法布尔谢谢!你是对的,现在它工作正常。 – In777

首先,除非有一个微不足道的错误,

中的.txt写回功能后会发生:从不执行txt文件写!

然后,以抑制输出到控制台,只是做你运行程序之前:

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