Skip to content Skip to sidebar Skip to footer

Weird Function Return Value?

I am trying to remove everything between curly braces in a string, and trying to do that recursivesly. And I am returning x here when the recursion is over, but somehow the functio

Solution 1:

You never return anything if the if block succeeds. The return statement lies in the else block, and is only executed if everything else isn't. You want to return the value you get from the recursion.

if x.find('{', ind) != -1 and x.find('}', ind) != -1:
    ...
    return doit(x, end+1)
else:
    return x

Solution 2:

...
#print(x)
doit(x,end+1)
...

should be

...
#print(x)
return doit(x,end+1)
...

You are missing the return statement in the if block. If the function is calls itself recursively, it doesn't return the return value of that call.


Solution 3:

Note that it is easier to use regular expressions:

import re
strs = "i am a string but i've some {text in brackets} braces, and here are some more {i am the second one} braces"
strs = re.sub(r'{.*?}', '', strs)

Post a Comment for "Weird Function Return Value?"