我有一个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中做到这一点?
提前致谢,
费
答案 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
无法获得预期的输入。