How to cast string back into a list

前端 未结 3 1328
后悔当初
后悔当初 2021-01-12 13:43

I have a list:

ab = [1, 2, a, b, c]

I did:

strab = str(ab).

So strab is now a string.

<
相关标签:
3条回答
  • 2021-01-12 13:55

    In the context of setting a numpy array element with a sequence, you can use the built-in join to bypass setting it to a string:

    str_list_obj = '-'.join(list_obj)
    

    and afterwards when needed split the string sequence again with the same connector (provided it does not appear in the list's strings):

    og_list_obj = str_list_obj.split("-")

    0 讨论(0)
  • 2021-01-12 13:56

    The easiest and safest way would be to use ast.literal_eval():

    import ast
    
    ab = [1, 2, 'a', 'b', 'c']    # a list
    strab = str(ab)               # the string representation of a list
    strab
    => "[1, 2, 'a', 'b', 'c']"
    
    lst = ast.literal_eval(strab) # convert string representation back to list
    lst
    => [1, 2, 'a', 'b', 'c']
    
    ab == lst                     # sanity check: are they equal?
    => True                       # of course they are!
    

    Notice that calling eval() also works, but it's not safe and you should not use it:

    eval(strab)
    => [1, 2, 'a', 'b', 'c']
    
    0 讨论(0)
  • 2021-01-12 13:59

    Use the ast package:

    import ast
    lst = ast.literal_eval(strab)
    
    0 讨论(0)
提交回复
热议问题