将字符串放入列表中

时间:2017-08-03 22:30:39

标签: python string list

我有一个像

这样的字符串
"['foo', 'bar', 'baz', 0, 1]"

并希望将其转换为类似

的列表
['foo', 'bar', 'baz', 0, 1]

我尝试过将字符串切片到列表中的各种方法,但是虽然这样做有效,但它会将01保留为字符串,同时也无法轻松更改不同的列表。

除了大量for循环和切片之外,还有更简单的方法吗?

3 个答案:

答案 0 :(得分:2)

不是我主张使用MERGE (u1:User {Id:${id}}) WITH u1, ${ids.mkString("[", ",", "]")} as ids UNWIND ids as u2id MERGE (u2:User {Id:u2id}) MERGE (u1)-[:FRIEND]->(u2) ,你可以这样做

eval

我建议您使用eval("['foo', 'bar', 'baz', 0, 1]"),更安全" ast.literal_eval

答案 1 :(得分:2)

如果它只包含原始对象(如字符串,整数等),则可以使用ast.literal_eval

>>> import ast
>>> ast.literal_eval("['foo', 'bar', 'baz', 0, 1]")
['foo', 'bar', 'baz', 0, 1]

答案 2 :(得分:2)

考虑literal_eval函数进行直接转换。如果您想自己处理,请尝试以下方法:

in_str = "['foo', 'bar', 'baz', 0, 1]"
no_bracket = in_str[1:-1]
print no_bracket
my_list = no_bracket.split(', ')
print my_list

输出:

["'foo'", "'bar'", "'baz'", '0', '1']

你能从那里结束吗?每个元素都是您想要的值的字符串图像。对于真正的字符串,您必须剥去额外的引号;对于数值,您必须使用int()

要知道哪个是哪个,请尝试isdigit方法。