将字符串列表更改为列表

Kev*_*vin 5 python python-3.x

所以,我将一个列表保存为一个字符串文件.特别是,我做了:

f = open('myfile.txt','w')
f.write(str(mylist))
f.close()
Run Code Online (Sandbox Code Playgroud)

但是,稍后当我再次打开此文件时,请使用(string-ified)列表,并希望将其更改回列表,会发生以下情况:

>>> list('[1,2,3]')
['[', '1', ',', '2', ',', '3', ']']
Run Code Online (Sandbox Code Playgroud)

我可以这样做,以便从文件中获得列表[1,2,3]吗?

aIK*_*Kid 4

这里有两个最简单的主要选项。首先,使用ast.literal_eval

>>> import ast
>>> ast.literal_eval('[1,2,3]')
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

与 不同的是eval,这更安全,因为它只会计算 python 文字,例如列表、字典、NoneTypes、字符串等。如果我们在内部使用代码,这会抛出错误。

其次,使用该json模块,使用json.loads

>>> import json
>>> json.loads('[1,2,3]')
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

使用的一个很大的优点json是它是跨平台的,而且你还可以轻松地写入文件。

with open('data.txt', 'w') as f:
    json.dump([1, 2, 3], f)
Run Code Online (Sandbox Code Playgroud)