Class HtmlPasser不解析整个输入

Class HtmlPasser不解析整个输入,class,python-3.x,html-parsing,Class,Python 3.x,Html Parsing,我用python编写了一些脚本,但从未真正接触过类。现在我需要一个,因为我需要设置一个html解析器(来自web中的sniplets)。它工作正常,但缺少最后一个数据字符串。上次似乎没有运行该函数 我的代码如下: class MyHTMLParser(HTMLParser): def __init__(self): #reset self.reset() #options self.strict = Fals

我用python编写了一些脚本,但从未真正接触过类。现在我需要一个,因为我需要设置一个html解析器(来自web中的sniplets)。它工作正常,但缺少最后一个数据字符串。上次似乎没有运行该函数

我的代码如下:

class MyHTMLParser(HTMLParser):
    def __init__(self):
        #reset
        self.reset()        
        #options
        self.strict = False
        self.convert_charrefs= True
        #create empty list for all my stored data
        self.fed = []               
    def handle_data(self, data):
        print ('D:', data)        #as you might see in output of a run, string after last tag is not added, because function did obviously not run
        self.fed.append('-'+data)
    def get_data(self):
        return ''.join(self.fed)

def process_description(desc):
    s = MyHTMLParser()
    s.feed(desc)
    return s.get_data()

text_html='first <br />second<br />third'
text=process_description(text_html)  
print (text)

函数process\u description()不会完全处理文本\u html字符串。从输出中可以看出,handle_data()函数没有处理最后一个html标记后的子字符串(“第三个”)。一定有什么语法错误。有什么问题吗?

子类
\uuuu init\uuuu
应该只调用基类
\uuuuuu init\uuuuu
,而不是复制您认为它做的事情,只做额外的真正特定于子类的事情

def __init__(self):
    super().__init__(strict = False, convert_charrefs= True)
    #create empty list for all my stored data
    self.fed = []               
实际的错误是,您在完成馈送后忘记调用.close()。来自文档:“强制处理所有缓冲数据,就像它后面有一个文件结束标记一样。”


(空格在输入中。)

请澄清您的问题-问题到底是什么?请参阅编辑的问题,感谢您的建议。感谢您解释我从web复制粘贴的这一基本错误。我之前只是想知道,因为我认为,有一些关键字像构造函数和析构函数。这是终点站还是我又错了?请你推荐这个问题的另一个标题,以便它对其他人有用和可查找?(例如,已解决:HTMLPasser,解析未完全完成。或“已解决:HTMLPasser未解析整个输入”。(另外,将答案标记为已接受;-)(我不理解“关键字…终端”中的问题。)
def __init__(self):
    super().__init__(strict = False, convert_charrefs= True)
    #create empty list for all my stored data
    self.fed = []               
def process_description(desc):
    s = MyHTMLParser()
    s.feed(desc)
    s.close()  # <-- added #
    return s.get_data()
D: first 
D: second
D: third
-first -second-third