0

各行の値がスペースまたはコンマで区切られていない場合があるという点で非常に貧弱に作成されたテキストファイルを読みたいと思っています(したがって、.split()を使用できません)。各値がどこにあるかを正確に伝える FORTRAN のように読みたいと思います。これが私が試みていることです。これを行うためのより良いアプローチを知っている人はいますか? ありがとう !

f=open('f.out','r')

lines = f.readlines()

nLines = len(lines)
data = {}


keys = {'SPE':[0, 2, np.int],              #I2
      'SPEISO':[2, 3, np.int],         #I1
      'wnum':[3,15, np.float64],       #F12.6
      'S':[15, 25, np.float64],     #E10.3
      'Ecoeff':[25, 35, np.float64],     #E10.3
      'AGA':[35, 40, np.float64],     #F5.5
      'SGA':[40, 45, np.float64],     #F5.4
      'ELO':[45, 55, np.float64],     #F10.4
      'N'  :[55, 59, np.float64],     #F4.2
      'FSH':[59, 67, np.float64],     #F8.6
      'TRS':[67, 127, np.str],
      'IERR': [127, 133, np.int],
      'IEFF': [133, 145, np.str],
      'other': [145,160, np.str]  }

for k in keys:
  data[k] = np.zeros(nLines)

for i, l in enumerate(lines):
 print i
  for k in keys:
    print k
    data[[k][i]] = l.format(keys[k])
4

1 に答える 1

1

pandasライブラリのread_fwf関数を使用できる場合があります。

何かのようなもの:

import pandas
pandas.read_fwf('f.out', 
   colspecs=[x[:2] for x in keys.values()],
   dtype=[x[2] for x in keys.values()]
   )
于 2013-02-02T22:36:13.107 に答える