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


Log in to reply