0

私は自分の仕事をしようとしているのと同時に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

このエラーを回避するために誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

0

問題は別の方法で修正されましたが、上記が機能しない理由はまだわかりません。Python の異なるバージョン (2.7 と 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
于 2013-07-03T02:07:40.253 に答える