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

Chris c at cdot.de
Wed Sep 7 08:22:03 EDT 2005


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...

chris



More information about the Python-list mailing list