[英]How to convert a list into a string and then convert it back in python?
[英]How do I convert a string of a list back to a list in python?
所以我有一个实际上是列表的字符串,例如:
a = "[['hey', '4A48'], ['hello', '4D42']]"
我想将其转换回列表。
我希望我的输出是这样的:
a = [['hey', '4A48'], ['hello', '4D42']]
因此它是实际列表而不是字符串。
您可以使用ast
模块来解析字符串:
>>> import ast
>>> thestring = "[['hey', '4A48'], ['hello', '4D42']]"
>>> thelist = ast.literal_eval(thestring)
>>> print(thelist)
[['hey', '4A48'], ['hello', '4D42']]
>>> type(thelist)
<class 'list'>
>>> print(thelist[0])
['hey', '4A48']
>>> type(thelist[0])
<class 'list'>
并且(在这种简单情况下)通过repr
返回字符串:
>>> repr(thelist)
"[['hey', '4A48'], ['hello', '4D42']]"
>>> repr(thelist) == thestring
True
eval
可以工作,但是将在字符串内执行任何python代码,这可能会带来安全风险或产生有害的副作用。 使用ast.literal_eval
更加安全,即使在受信任的输入上也是如此。
你可以使用eval
>>> a = "[['hey', '4A48'], ['hello', '4D42']]"
>>> l=eval(a)
>>> l[0]
['hey', '4A48']
>>> type(l)
list
进行比较:
>>> timeit(ast.literal_eval(a))
100000 loops, best of 3: 15.6 µs per loop
>>> timeit(eval(a))
100000 loops, best of 3: 9.72 µs per loop
如果您控制输入或可以确保没有人从事任何猴子业务,则可以使用eval :
expression参数将被解析并评估为Python表达式(从技术上讲,是一个条件列表)
示例(您必须将代码作为字符串传递):
result = eval("[['hey', '4A48'], ['hello', '4D42']]")
result
将是您的列表列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.