get a list from a string

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • simon kagwe

    get a list from a string

    Hi,

    I have a string "distances = [[1,1,1,1],[2,2,2,2]]". I want to create a
    variable called distances whose value is the list [[1,1,1,1],[2,2,2,2]]. How can
    I go about that? I know I can use setattr, but how do I create the list from the
    string?

    Regards,
    Simon

  • half.italian@gmail.com

    #2
    Re: get a list from a string

    On Jun 7, 3:34 am, simon kagwe <simonka...@yah oo.comwrote:
    Hi,
    >
    I have a string "distances = [[1,1,1,1],[2,2,2,2]]". I want to create a
    variable called distances whose value is the list [[1,1,1,1],[2,2,2,2]]. How can
    I go about that? I know I can use setattr, but how do I create the list from the
    string?
    >
    Regards,
    Simon
    exec("distances = [[1,1,1,1],[2,2,2,2]]")

    ~Sean

    Comment

    • simon kagwe

      #3
      Re: get a list from a string

      exec("distances = [[1,1,1,1],[2,2,2,2]]")
      Wow! So simple!

      Thanks a lot. :-)




      Comment

      • Dustan

        #4
        Re: get a list from a string

        On Jun 7, 6:06 am, simon kagwe <simonka...@yah oo.comwrote:
        exec("distances = [[1,1,1,1],[2,2,2,2]]")
        To be clear, exec is *not* a function; it's a statement. That means it
        can't be used in lambda functions, for example.
        Wow! So simple!
        but dodgy, as it'll execute any python code.
        Thanks a lot. :-)

        Comment

        • Steven D'Aprano

          #5
          Re: get a list from a string

          On Thu, 07 Jun 2007 11:06:54 +0000, simon kagwe wrote:
          >exec("distance s = [[1,1,1,1],[2,2,2,2]]")
          Wow! So simple!
          >
          Thanks a lot. :-)
          Yes, and when you embed this in your web-application, using data gathered
          from a web-form, the black-hat hackers will thank you for the security
          hole too.

          Surely a much better solution would be NOT to start with a string like
          "distances = [[1,1,1,1],[2,2,2,2]]" in the first place? Where does that
          string come from? If it comes from the user, at run-time, using exec is a
          MAJOR security hole. If it comes from the source code, then WHY???

          I wish exec and eval were hidden away in a module so they were harder (but
          not impossible) to get to. Because I'm paranoid, I wish importing that
          module would print an warning saying "Are you MAD??? Don't do this!!!". I
          wish even more that Python would come with a built-in "make a list from a
          list representation" function, but that at least is fairly easy to create:
          you can modify




          Here is a discussion about just how hard (that is, probably impossible) it
          is to make eval safe:






          Comment

          • Steven D'Aprano

            #6
            Re: get a list from a string

            Ah, sorry, pre-mature sending. Stupid keyboard accelerators :(

            To finish the sentence I was trying to write:

            On Thu, 07 Jun 2007 22:39:41 +1000, Steven D'Aprano wrote:
            I wish even more that Python would come with a built-in "make a list from a
            list representation" function, but that at least is fairly easy to create:
            you can modify
            .... Fredrik Lundh's safe-eval function:






            --
            Steven.

            Comment

            Working...