escape / un-escaping strings

On 12/03/2013 at 08:59, xxxxxxxx wrote:

Hi, I'm not sure if my title is accurate enough.
But, I'm thinking about having a User Data entry field where I can copy / paste the Python ID for certain object parameters (none specific), and then use that in a custom effector to alter that parameter.

So, I'm not sure if there's a simple way to translate the string. I've been looking at other ways to escape / un-escape strings in Python, but everything I've seen so far is more complicated than calling something like eval('stringToEval')

I will continue to search, but thought I'd post here in the mean time.

Thanks,

Jim

On 12/03/2013 at 09:44, xxxxxxxx wrote:

simply use eval.

print obj[eval('c4d.{0}'.format(obj[c4d.ID_USERDATA,1]))]

edit : and before someone starts complaining, yeah it is pretty sloppy and unsafe, so you 
might want to add some fallbacks and double checks.

On 12/03/2013 at 09:48, xxxxxxxx wrote:

Thanks ferdinand.
I was just about to post that I got it to work 😊
My approach seems a bit different than yours though.

p   = op[c4d.ID_USERDATA,4]
obj[eval(p)] = <some value>

On 12/03/2013 at 09:49, xxxxxxxx wrote:

I do not recommend the eval function. See this excellent blog post why.
Better use getattr:

try:
    val = getattr(c4d, obj[c4d.ID_USERDATA, 1])
except AttributeError:
    pass

-Niklas

On 12/03/2013 at 10:01, xxxxxxxx wrote:

Niklas,
Ouch. That article sure makes eval() scary.
I will take your suggestions.

Thank you,

Jim