我以前从未学过OOP,
所以我对HTMLParser感到困惑.
from HTML.parser import HTMLParserclass parser(HTMLParser):def handle_data(self,data): print(data)p = parser()page = """<HTML><h1>Title</h1><p>I'm a paragraph!</p></HTML>"""p.Feed(page)
我会得到这个:
Title
I’m a paragraph!
抱歉我的英语不好,谢谢你的帮助!
解决方法 我没有查看HTMLParser模块本身,但我可以看到Feed固有地调用handle_data,它在派生类中执行打印. @ ron的回答建议将数据直接传递给你的函数,这完全没问题.但是,由于您是OOP的新手,可以查看此代码.这是Python,2.x,但我认为唯一可以改变的是包位置,HTML.parser而不是HTMLParser.
from HTMLParser import HTMLParserclass MyParser(HTMLParser): def handle_data(self,data): self.output.append(data) def Feed(self,data): self.output = [] HTMLParser.Feed(self,data)p = MyParser()page = """<HTML><h1>Title</h1><p>I'm a paragraph!</p></HTML>"""p.Feed(page)print p.outputoutput['Title',"I'm a paragraph!"]
在这里,我将重写HTMLParser的Feed方法.相反,当调用p.Feed(页面)时,它将调用我的方法,该方法创建/设置一个名为output的实例变量到一个空列表,然后调用基类中的Feed方法(HTMLParser)并继续它的内容通常会.因此,通过重写Feed方法,我可以做一些额外的事情(添加一个新的输出变量). handle_data方法类似地是覆盖方法.事实上,HTMLParser的handle_data方法甚至没有做任何事情……根本没有(根据文档.)
所以,只是为了澄清……
你调用p.Feed(页面)调用MyParser.Feed方法
MyParser.Feed将变量self.output设置为空列表,然后调用HTMLParser.Feed
handle_data方法将行添加到输出列表的末尾.
您现在可以通过调用p.output来访问数据.
@H_301_0@ 总结以上是内存溢出为你收集整理的如何从类(在HTMLParser中)将数据传递给另一个函数?全部内容,希望文章能够帮你解决如何从类(在HTMLParser中)将数据传递给另一个函数?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)