如何将字符串转换回列表

7

我有一个列表:

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

我做了:

strab = str(ab).

所以strab现在是一个字符串。

我想将该字符串转换回列表。

我该如何做到这一点?


8
不,那是错误的。 - David Robinson
@DavidRobinson 这正是我打算让它这样做的,我认为它是一个字符列表。 - aaronman
1
@aaronman 即使它是一个字符列表,你也会得到额外的 [、空格和, 混在其中。 - David Robinson
6
@aaronman,那就不要用带有讽刺意味的评论来回答关于Python的问题。 - Ryan Haining
1
请参见 https://dev59.com/KHM_5IYBdhLWcg3wTRPL。 - Ben Jackson
显示剩余5条评论
3个回答

19

最简单和最安全的方法是使用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!

请注意,调用eval()也可以工作,但它不安全,您不应该使用它:

eval(strab)
=> [1, 2, 'a', 'b', 'c']

6
使用 ast 包:
import ast
lst = ast.literal_eval(strab)

1
在设置numpy数组元素时,如果你要使用序列,可以使用内置的join来避免将其设置为字符串:
str_list_obj = '-'.join(list_obj)

并且在需要时使用相同的连接器再次拆分字符串序列(前提是它不出现在列表字符串中): og_list_obj = str_list_obj.split("-")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接