Python:读取一个文件,其中列表转换为字符串并转换回列表

时间:2017-02-27 19:45:51

标签: python string list readfile

我有一个txt文件,如下所示:

0.41,"[1.0, 0.0, 1.0]","[16.4, 0.0, 0.0]"    
0.23,"[0.0, 2.0, 2.0]","[32.8, 0.0, 0.0]"    
0.19,"[0.0, 0.0, 3.0]","[92.8, 0.0, 0.0]"   

我希望阅读它并将字符串转换为列表:

a=[0.41, 0.23, 0.19, 0.03, 0.02, 0.02]    
b=[[1.0, 0.0, 1.0],[0.0, 2.0, 2.0],[0.0, 0.0, 3.0]]    
c=[[16.4, 0.0, 0.0],[32.8, 0.0, 0.0],[92.8, 0.0, 0.0]]     

我怎么能在python中做到这一点?

提前致谢,

1 个答案:

答案 0 :(得分:2)

我会使用csv模块正确地标记项目,然后我使用zip转置行并使用ast.literal_eval <将字符串数据转换为python列表/值/ p>

import csv
import ast


with open("file.txt") as f:
   cr = csv.reader(f)
   items = [[ast.literal_eval(x) for x in row] for row in zip(*cr)]

print(items)

结果:列表列表

[[0.41, 0.23, 0.19], [[1.0, 0.0, 1.0], [0.0, 2.0, 2.0], [0.0, 0.0, 3.0]], [[16.4, 0.0, 0.0], [32.8, 0.0, 0.0], [92.8, 0.0, 0.0]]]

这不是一般情况,但如果你知道列表中确实有3个项目,你可以将它们解压缩到你想要的任何变量:

if len(items)==3:
    a,b,c = items
    print(a)
    print(b)
    print(c)

你得到:

[0.41, 0.23, 0.19]
[[1.0, 0.0, 1.0], [0.0, 2.0, 2.0], [0.0, 0.0, 3.0]]
[[16.4, 0.0, 0.0], [32.8, 0.0, 0.0], [92.8, 0.0, 0.0]]

请注意,根据输入数据,a无法获得预期的输入。