0

私はこのように解析し.txtます:

def parse_file(src):
    for line in src.readlines():
        if re.search('SecId', line):
            continue
        else:
            cols = line.split(',')
            Time = cols[4]
            output_file.write('{}\n'.format(
                          Time))

colsインデックスが使えるリストだと思います。希望どおりに正しい結果を出力することはできますが、範囲外のエラーがあります。

ファイル"./tdseq.py"、37行目、parse_file時間= cols [4] IndexError:リストインデックスが範囲外ですmake:* [all]エラー1

私が使用するデータ:

I10.FE,--,xx,xxxx,13450,tt,tt,tt,33,22,22:33:44
4

3 に答える 3

2

データを見ずに言うのは難しいです。

考えられる原因は、次のような行の場合に、1ベースのインデックス付けを想定していることです。

foo,bar,baz,qux

リスト内の位置0、1、2、3としてインデックスが付けられます。

ちなみに、csvモジュールを使用してファイルを解析することを強くお勧めします

于 2012-07-11T03:10:14.773 に答える
0

cols5つの要素が含まれていないため、IndexErrorが発生します。おそらく、ファイルに空白行がありますか?

また、ファイルから行を取得するには、次の方法を使用する方が適切であることに注意してください。

for line in src:

単純な文字列を検索する場合は、正規表現は必要ありません。これで十分です。

if 'SecId' in line:
    continue
于 2012-07-11T03:10:07.763 に答える
0

len(cols)チェックを使用します。time_index=3また、あなたの入力データはそうではないことを示唆してい4ます:

from __future__ import print_function

def parse_file(input_file):
    time_index = 3
    for line in input_file:
        if 'SecId' not in line:
            cols = line.split(',')
            if len(cols) > time_index:
               time = cols[time_index]
               print(time, file=output_file)
于 2012-07-11T03:11:47.867 に答える