Am 10.11.2010 18:56, schrieb Simon Mullis:
Yes, eval is evil, may lead to security issues and it's unnecessary
slow, too.
> # In the meantime - and as a proof of concept - I'm using a dict instead.
>
> xpathlib = {
> "houses" : r'[ y.tag for y in x.xpath("//houses/*") ]',
> "names" : r'[ y.text for y in x.xpath("//houses/name") ]',
> "footwear_type" : r'[ y.tag for y in
> x.xpath("//cupboard/bottom_shelf/*") ]',
> "shoes" : r'[ y.text for y in
> x.xpath("//cupboard/bottom_shelf/shoes/*") ]',
> "interface_types" : r'[ y.text[:2] for y in
> x.xpath("//interface/name") ]',
> }
You have two possibilities here:
* either learn more XPath. You can do everything with XPath as well,
for example "//houses/name/text()"
* use lambdas instead, for example "names" : lambda x: [y.text for y in
x.xpath("//houses/name")]
Christian
--
http://mail.python.org/mailman/listinfo/python-list