[Python-de] Erweiterte "For"-Schleife
Thomas Rachel
nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915 at spamschutz.glglgl.de
Mi Mai 9 16:15:33 CEST 2012
> Das ist schon klar. Mein Problem ist aber Minidom:
>
> for c in f.childNodes if c.localName == 'header':
> for p in c.childNodes if p.localName == 'property':
> print('%s = %s' % (p.getAttribute('name'), p.getAttribute('value')))
>
> was in dieser Form leichtverständlich ist, aber ohne den syntaktischen
> Zucker eben deutlich schwerer nachvollziehbar.
Hm. Vielleicht ja
def filterlocalname(node, name):
for child in node.childNodes:
if child.localName == name: yield child
oder einfach
filterlocalname = lambda node, name: (
child for child in node.childNodes if child.localName == name
)
und dann:
for c in filterlocalname(f, 'header'):
for p in filterlocalname(c, 'property'):
print('%s = %s' % (p.getAttribute('name'),
p.getAttribute('value')))
Hab grade überlegt, ob sich nicht einfacher was mit
getElementsbyTagName() oder so machen ließe, aber das berücksichtigt
nicht die Beschränkung auf "header" auf der 1. Ebene...
Thomas
Mehr Informationen über die Mailingliste python-de