python-从文件中读取多个列

python-从文件中读取多个列,python,python-2.7,Python,Python 2.7,这是一个衍生自。在该脚本中,在python脚本中出现以下行: c1,c2 = [float(x) for x in line.split()] #convert line into 2 floats and unpack 读取包含两列的数据文件时 现在,我的real数据文件有31列,我需要使用第28列和第31列,而不是第1列和第2列。当我尝试最简单(也是最丑陋)的方法来升级这条线时: c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,

这是一个衍生自。在该脚本中,在
python
脚本中出现以下行:

c1,c2 = [float(x) for x in line.split()] #convert line into 2 floats and unpack
读取包含两列的数据文件时

现在,我的real数据文件有31列,我需要使用第28列和第31列,而不是第1列和第2列。当我尝试最简单(也是最丑陋)的方法来升级这条线时:

c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18,c19,c20,c21,c22,c23,c24,c25,c26,c27,c28,c29,c30,c31 = [float(x) for x in line.split()]
我得到一个错误:

ValueError: too many values to unpack
如何正确读取文件中的所有列

cols = [float(x) for x in line.split()]
for i in len(cols):
    print i, cols[i]
不需要实例化N个变量,只需在读取文件时使用您拥有的数组即可

本例中的for循环可帮助您查看实际有多少值另一种方法:

cols = [float(x) for x in line.split()]
c28, c31 = cols[27], cols[30]
因此,整体设置将类似于:

with open('<file name here>') as source_file:
    for line in source_file:
        cols = [float(x) for x in line.split()]
        c28, c31 = cols[27], cols[30]
以open(“”)作为源文件:
对于源_文件中的行:
cols=[x在line.split()中为x浮动(x)]
c28,c31=cols[27],cols[30]

所有行是否都有31列?如果行是“锯齿状的”(有些行少于或多于31列),这种方法将失败。太好了,我选择这一行主要是因为它清楚地表明数组从
0
开始,这不是一件小事(不知道这会给我奇怪的结果),谢谢!