我想打印标签id,如果它有一个id。如果标签没有标识但是有类,我希望它能打印类。如果没有id或class,我希望它打印标签名称(img,h1等)。它只需要一个打印文件,如id或class或tag,但不是全部。它需要始终支持第一个ID,然后是班级,然后是标签名称,但只能显示其中一个。它用于输出sass(如css)模板。检查元组列表中的字符串,然后访问它打印它
我要看看“身份证”是元组名单(它是):
[('class', 'title'), ('id', 'donkey'), ('src', 'images/DonkeyKongLogo.png')]
列表称为ATTRS。这是我的代码,看看'id'是否在attrs:
它检查第一个元组,看看下一个元组中的'class'和'title',但没有'id',所以它进入下一个元组如果声明(从未找到'id')。任何帮助赞赏。谢谢。
def handle_starttag(self, tag, attrs):
if attrs != []:
for attr in attrs:
if ('id' in attr):
id = attr.index('id')
self.the_file.writelines(self.indent * self.getpos()[1] + '#' + attr[id+1] + ' {' +'\n')
self.pos = self.getpos()[1]
break
elif ('class' in attr):
clas = attr.index('class')
self.the_file.writelines(self.indent * self.getpos()[1] + "." + attr[clas+1] + " {"+'\n')
self.pos = self.getpos()[1]
break
else:
self.the_file.writelines(self.indent * self.getpos()[1] + tag + " {"+'\n')
self.pos = self.getpos()[1]
break
如果这些'break'语句需要保持,那么你总是**仅限**处理第一个值。在这种情况下,你可以简单地这样做:'如果attrs:','attr = attrs [0]'并且去掉'for'循环。但是,这听起来不对。 –