On 2010-11-10 17:14 , Christian Heimes wrote:
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")]
Well, the key reason he is using strings is so that he can easily slap on a
Django admin UI to allow certain users to add new expressions. lambdas don't
help with that.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
--
http://mail.python.org/mailman/listinfo/python-list