我最近开始学习如何使用python解析xml文件。我从http://pyxml.sourceforge.net/topics/howto/node12.html那里学到了这个教程
当我运行以下代码时,会得到错误:
Traceback (most recent call last):
File "C:\Users\Name\Desktop\pythonxml\tutorials\pythonxml\pyxml sourceforge\5.1 Comic Colection\SearchForComic.py", line 30, in -toplevel-
dh = FindIssue('sandman', '62')
TypeError: __init__() takes exactly 1 argument (3 given)代码:
from xml.sax import saxutils
class FindIssue(saxutils.DefaultHandler):
def __init___(self, title, number):
self.search_title, self.search_number = title, number
def startElement(self, name, attrs):
#if it's not a comic element, ignore it
if name!= 'comic': return
# look for the title and number sttributes (see text)
title = attrs.get('title', None)
number = attrs.get('number', None)
if (title == self.search_title and
number == self.search_number):
print title, '#' +str (number), 'found'
from xml.sax import make_parser
from xml.sax.handler import feature_namespaces
if __name__ == '__main__':
#Create a parser
parser = make_parser()
#tell the parser that we are not interested in XML namespaces
parser.setFeature(feature_namespaces, 0)
#create the handler
dh = FindIssue('sandman', '62')
#tell the parse to use our handler
parser.setContentHandler(dh)
#parse the input
parser.parse('collection.xml')同样,在最后一行中,我将文件(它位于当前工作目录中)传递给它,这是处理文件的正确方式吗?
发布于 2012-08-10 15:53:31
以_init_的名义出现了太多的_。构造函数的声明应该是:
def __init__(self, title, number):不是:
def __init___(self, title, number):注意额外的下划线符号。
发布于 2012-08-10 15:54:15
你有一个错误-这里有三个下划线:
def __init___(self, title, number):应:
def __init__(self, title, number):因为它与名称__init__不完全匹配,所以Python只知道默认的构造函数def __init__(self)。
https://stackoverflow.com/questions/11905148
复制相似问题