执行数据导入功能

时间:2013-07-02 16:54:48

标签: function import

我在尝试做我的工作的同时正在学习python。当我使用以下函数导入一些数据时(GSLIB只是一种文件格式):

def ReadGsLibFile( infilename ) :
   file = open(infilename, 'r')
   file.readline()
   nvar = int(file.readline())
   for i in range(nvar) : file.readline()
   data = []
   while True :
      dataFile = file.readline()
      if len(dataFile) == 0 : break
      else :
        data.append( [float(val) val in dataFile.split() ]  )
   return data

我收到此错误:

File "", line 13
data.append( [float(val) val in dataFile.split() ] )
^
SyntaxError:invalid syntax

我使用的数据如下所示:

apTItest.sgems
4
x
y
z
value
  0.00         0.00               0.00                 4.000000
  1.00         0.00               0.00                 4.000000
  2.00         0.00               0.00                 4.000000
  3.00         0.00               0.00                 4.000000
  4.00         0.00               0.00                 4.000000
  5.00         0.00               0.00                 4.000000
  6.00         0.00               0.00                 4.000000

有人能指出我正确的方向来解决这个错误吗?

1 个答案:

答案 0 :(得分:0)

问题修复了另一种方式 - 虽然我仍然不明白为什么上述不起作用。它可以基于不同版本的Python(2.7 vs 3.3)。还更改了输入文件格式,因此更容易导入。

def ReadGsLibFile( infilename ) :
    file = open(infilename, 'r')
    file.readline()
    nvar = int(file.readline())
    for i in range(nvar) : file.readline()
    data = []
    while True :
          dataFile = file.readline()
          if len(dataFile) == 0 : break
          else :
              row = []
              for val in dataFile.split():
                  row.append(float(val))

              data.extend(row)
    return data

并且导入文件现在只保留原始文件中的最后一列,...看起来像这样:

apTItest
4
x
y
z
value
4
4
4
4
4
4
4