2011-12-10 5 views
2

私はテキストファイルを再フォーマットするプログラムを書いています。古いファイルには、以下のようなテキストがいくつか含まれています。Pythonのファイルからテキストの列を逆にする

Take 
3 
29 
1001 83.489601 279.859650 1.000000 
1002 83.489594 271.848480 0.997735 
1003 83.489594 263.837311 0.997337 
1004 83.489594 256.076111 0.996816 
1005 83.364594 248.189941 0.995626 
1006 83.364594 240.178787 0.994840 

私のプログラムは、現在、私が欲しいの形式で新しいファイルにこれを書き込み、いくつかの行を追加します。それで、次のようになります:

clip 
Values 12 
trick, pos, ypos, similarity 
1001 83.489601 279.859650 1.000000 
1002 83.489594 271.848480 0.997735 
1003 83.489594 263.837311 0.997337 
1004 83.489594 256.076111 0.996816 
1005 83.364594 248.189941 0.995626 
1006 83.364594 240.178787 0.994840 

私が今必要とするのは、新しいファイルの3番目の列の垂直方向を逆にすることです。それはこのように見て終わる必要があります。

clip 
Values 12 
trick, pos, ypos, similarity 
1001 83.489601 240.178787 1.000000 
1002 83.489594 248.189941 0.997735 
1003 83.489594 256.076111 0.997337 
1004 83.489594 263.837311 0.996816 
1005 83.364594 271.848480 0.995626 
1006 83.364594 279.859650 0.994840 

私は一度に数字1行の第三のセットを分割することができますが、私は戻って、それが正しい位置だとでその列を書いて行くべきかを見つけ出すことはできません。このファイルには複数のブロックがあり、長さが異なります。私はちょうど私が今完全に失われているので、働き始めるための指示が必要です。これを達成するためには、どのような機能を見なければなりませんか?どんな助けもありがとう。私はコーディングに新しいですと手順があるのPython 3.2.2

答えて

1

を使用しています:各行の

  • 読む、フィールド
  • にそれを分割リスト
  • 使用のリストに結果を蓄積します適切な行(以前の列)を選び、バックカラムに
  • list.reverseトランスを使用するアレイ
  • を転置するzip(*t)

    >>> s = '''\ 
    1001 83.489601 279.859650 1.000000 
    1002 83.489594 271.848480 0.997735 
    1003 83.489594 263.837311 0.997337 
    1004 83.489594 256.076111 0.996816 
    1005 83.364594 248.189941 0.995626 
    1006 83.364594 240.178787 0.994840 
    '''.splitlines() 
    >>> result = [] 
    >>> for line in s: 
         result.append(line.split()) 
    
    
    >>> t = zip(*result) 
    >>> t[2] = t[2][::-1] 
    >>> result = zip(*t) 
    >>> for row in result: 
         print ' '.join(row) 
    
    
    1001 83.489601 240.178787 1.000000 
    1002 83.489594 248.189941 0.997735 
    1003 83.489594 256.076111 0.997337 
    1004 83.489594 263.837311 0.996816 
    1005 83.364594 271.848480 0.995626 
    1006 83.364594 279.859650 0.994840 
    
    :フォーマット
  • は、ここでの例だディスク

に行を書きます

関連する問題