__dict__ of object, Was: Regular Expression IGNORECASE differentfor findall and split?

Mike Meyer mwm at mired.org
Wed Sep 7 19:25:06 EDT 2005


Chris <c at cdot.de> writes:
> Fredrik Lundh wrote:
>> Chris <c at cdot.de> wrote:
>>
>>>but more of a basic question following, I was doing the following before:
>>>
>>>method = 'split' # came from somewhere else of course
>>>result = re.__dict__[method].(REGEX, TXT)
>>>
>>>precompiling the regex
>>>
>>>r = compile(REGEX)
>>>
>>>does give an regex object which has the needed methods
>>>
>>>print dir(r)
>>>['__copy__', '__deepcopy__', 'findall', 'finditer', 'match', 'scanner',
>>>'search', 'split', 'sub', 'subn']
>>>
>>>but how do I evaluate them without explicitly calling them?
>>>
>>>result = r.__???MAGIC???__[method](TXT)
>>>
>>>obviously I am not a Python pro ;)
>> I really don't understand why you think you have to write
>> your RE code that way, but the mechanism you're looking
>> for is getattr:
>>     result = getattr(r, method)(TXT)
>>
>
> thanks (also to Steven) for the info, that is exactly what i was
> looking for.
>
> reason is that I built a small UI in which the user may choose if he
> want to do a split, findall (and maybe later others like match or
> search). So the method name comes in "from the UI". I could of course
> use if/elif/else blocks but thought getattr should be shorter and
> easier. I was not really aware of getattr which I was looking for on
> other occations before...

So why is the UI returning strings, instead of code objects of some
kind?

        <mike
-- 
Mike Meyer <mwm at mired.org>			http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.



More information about the Python-list mailing list