Python:读取列表转换为字符串的文件,然后再转换回列表

Python:读取列表转换为字符串的文件,然后再转换回列表,python,string,list,readfile,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],

我有一个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中实现这一点

提前感谢,


Fei

我将使用
csv
模块正确地标记项目,然后使用
zip
转换行,并使用
ast.literal\u eval
将字符串数据转换为python列表/值

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
无法进行预期的输入。

我将使用
csv
模块正确标记项目,然后使用
zip
转换行,并使用
ast.literal\u eval
将字符串数据转换为python列表/值

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
,您的预期输入是不可能的。

因为您是新手,所以请允许我提到,当您在此处提出问题时,您应该向我们展示您为解决您自己的问题而编写的代码。否则,您似乎将我们其他人用作代码编写服务。我认为您无法通过示例输入获得
a=[0.41,0.23,0.19,0.03,0.02,0.02]
。这没有道理。每个列表只能有3个值,否则我会迷失在逻辑中。因为你是新手,所以让我提一下,当你在这里提出问题时,你应该向我们展示你为解决自己的问题而编写的代码。否则,您似乎将我们其他人用作代码编写服务。我认为您无法通过示例输入获得
a=[0.41,0.23,0.19,0.03,0.02,0.02]
。这没有道理。每个列表只能有3个值,否则我会迷失在逻辑中。