Background: I'm building a  rules engine for transforming rows of data being 
returned by csv DictReader, eg. each row of data is a dict of column name to 
value mappings. My rules are a list of rule objects whose attributes get 
referenced by rule specific methods. Each rule has an associated method which 
gets called based on rule name.

Looking for some advice on how to optimize the BOILERPLATE portions of
the following type of code. There's an awful lot of dot dereferencing
going on. One thought was to pass in the values being dereferenced as
parameters and return value. But this would just move the dereferencing
to another point in my program and would add the overhead of parameter
passage. Is there a technique where I could store a reference to these
values that would make their access more efficient?

def action_strip(self):
    # BOILERPLATE: lookup value being transformed (possible to get a
    # direct 'pointer' to this dic entry???)
    value = self.data[self.rule.target_column]

    # BOILERPLATE: get rule's hard coded parameter
    match = self.rule.value.strip()

    # perform a generic transformation action
    while value.startswith(match):
        value = value.replace(match, '', 1).strip()
    while value.endswith(match):
        value = value[0:len(value) - len(match)].strip()

    # BOILERPLATE: update the value we just transformed
    self.data[self.rule.target_column] = value

Thank you,
Malcolm
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to