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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4