我有一个像
这样的字符串"['foo', 'bar', 'baz', 0, 1]"
并希望将其转换为类似
的列表['foo', 'bar', 'baz', 0, 1]
我尝试过将字符串切片到列表中的各种方法,但是虽然这样做有效,但它会将0
和1
保留为字符串,同时也无法轻松更改不同的列表。
除了大量for
循环和切片之外,还有更简单的方法吗?
答案 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
方法。