![](/img/trans.png)
[英]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.