簡體   English   中英

如何將列表的字符串轉換回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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM