On Sep 19, 3:13 am, Stefan Behnel <[EMAIL PROTECTED]> wrote: > [EMAIL PROTECTED] wrote: > > Does this make sense? It works pretty well, but I don't really > > understand everything that I'm doing. > > > def Parser(filename): > > It's uncommon to give a function a capitalised name, unless it's a factory > function (which this isn't). >
Yeah. I was going to use a class (and I still might), so that's how it got capitalized. > > events = ("recordnum", "primaryowner", "customeraddress") > > You're not using this anywhere below, so I assume this is left-over code. > I realized I didn't need that line soon after I posted. Sorry about that! > You could do this more easily in a couple of ways. One is to use XPath: > > print [el.text for el in tree.xpath("//primaryowner|//customeraddress")] > This works quite well. Wish I'd thought of it. > Note that this works directly on the tree that you retrieved right in the > third line of your code. > > Another (and likely simpler) solution is to first find the "Row" element and > then start from that: > > row = tree.find("//Row") > print row.findtext("primaryowner") > print row.findtext("customeraddress") > I tried this your way and Laurent's way and both give me this error: AttributeError: 'NoneType' object has no attribute 'findtext' > See the lxml tutorial on this, as well as the documentation on XPath support > and tree iteration: > > http://codespeak.net/lxml/xpathxslt.html#xpathhttp://codespeak.net/lxml/api.html#iteration > > Hope this helps, > Stefan I'm not sure what George's deal is. I'm not a beginner with Python, just with lxml. I don't have all the hundreds of modules of Python memorized and I have yet to meet any one who does. Even if I had used Beautiful Soup, my code would probably still suck and I was told explicitly by my boss to avoid adding new dependencies to my programs whenever possible. Thanks for the help. I'll add the list comprehension to my code. Mike -- http://mail.python.org/mailman/listinfo/python-list