Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中将csv文件中的字符串转换为列表_Python_Python 2.7 - Fatal编程技术网

如何在python中将csv文件中的字符串转换为列表

如何在python中将csv文件中的字符串转换为列表,python,python-2.7,Python,Python 2.7,我有一个包含矩阵的CSV文件: 1,9,5,78 4.9,0,24,7 6,2,3,8 10,21.4,8,7 我想创建一个返回列表列表的函数: [[1.0,9.0,5.0,78.0],[4.9,0.0,24.0,7.0],[6.0,2.0,3.0,8.0],[10.0,21.4,8.0,7.0]] 这是我的尝试: fileaname=".csv" def get_csv_matrix(fileaname): mat=open(fileaname,'r') mat_list=

我有一个包含矩阵的CSV文件:

1,9,5,78
4.9,0,24,7
6,2,3,8
10,21.4,8,7
我想创建一个返回列表列表的函数:

[[1.0,9.0,5.0,78.0],[4.9,0.0,24.0,7.0],[6.0,2.0,3.0,8.0],[10.0,21.4,8.0,7.0]]
这是我的尝试:

fileaname=".csv"
def get_csv_matrix(fileaname):
    mat=open(fileaname,'r')
    mat_list=[]
    for line in mat:
        line=line.strip()
        mat_line=[line]
        mat_list.append(mat_line)
return mat_list
但我得到的列表只有一个字符串:

[['1,9,5,78'], ['4.9,0,24,7'], ['6,2,3,8'], ['10,21.4,8,7']]
如何将字符串列表转换为浮动列表

mat_line = [line]
这一行只是将该行作为单个字符串,并将其放入一个元素列表中。如果要用逗号分隔,请执行以下操作:

mat_line = line.split(',')
如果您还想将它们转换为数字,则必须执行以下操作:

mat_line = [float(i) for i in line.split(',')]

我发现阅读列表理解比阅读for循环更容易

def get_csv_matrix(filename):
    with open(filename) as input_file:
        return [[float(i) for i in line.split(',')] for line in input_file]

print (get_csv_matrix("data.csv"))
上面的函数打开一个文件(我使用
以避免泄漏打开的文件描述符),迭代行,拆分每行,并将每个项转换为浮点数。

试试看

fileaname=".csv"
def get_csv_matrix(fileaname):
    mat=open(fileaname,'r')
    mat_list=[]
    for line in mat:
        line=line.strip()
        mat_line=line.split(",")
        for i in mat_line:
            i_position = line.index(i)
            line[i_position] = float(i)
        mat_list.append(mat_line)
    return mat_list
如果mat_line中的任何对象不是整数,您将出现错误,因此我建议您创建一个验证方法,以绝对确保它是整数。

旁白:模块存在。功能也是如此。