2016-05-13 16 views
0

のために空のエントリを持つファイルを読み込む:は今、私は、この形式のファイルを持っている特定の列

enter image description here

私は私の入力に列5及び6からの値を比較する必要があるので、私はしようとしています

for line in f: 
     line = line.strip() 
     columns = line.split() 
     if (list[0] == columns[4]): 
      if (list[1] == columns[5]): 
       self.mass = float(columns[13]) + float(columns[14]) 

しかし、時々、最初の列が空のエントリを持って、私の「列」インデックスは1でオーバーシフトします、と私はなりたい:使用してファイル全体を反復する(と仮定すると、ファイルfがインスタンス化されています)代わりに列6と7の項目を比較します。これを回避する方法はありますか?

ありがとうございます!私はあなたのファイルには、要素の数を維持するために、この

columns = line.split("\t") 

にこのライン

line = line.strip() 
columns = line.split() 

を変更することができ、その場合には、タブ区切りファイルは、実際にあると仮定するつもりだ

+1

なぜ人々はテキストの画像を投稿しますか?テキストをコピー/貼り付けるよりも簡単ですか? –

+0

ポイントは、あなたのフォーマットがエントリがどのようにアライメントされているかを教えてくれないので、実際にはスクリーンショットに基づいて質問に答えるのはかなり複雑です。 –

+0

ああ申し訳ありません!私はこれに新しいので、実際にはどちらが良い方法であるかわかりません、それに貼り付けたときに右に整列しているようには見えません... –

答えて

1

その配列の分割後に

これが当てはまらない場合は、あなたがあなたの現在の行の配列の長さがどのind比較するexes。

+0

これはタブで区切られていないようで、 'columns'の長さは15-17の範囲です(最初の列は空でもよい他の項目もあります)。右の列:( –

+0

その場合、誰かがより良い方法を知っているかもしれませんが、行あたりの列数を確認し、列の長さの大きさに基づいて必要な列を比較するロジックが異なります。配列はです。これは非常に危険な方法ですが、異なる数の列が表示される場合は対処するのが難しくなります。それらの列がどのように分離されているかを正確に調べて、それを区切り記号にする必要があります。 – Jayson

関連する問題