2016-05-05 17 views
0

に新しいファイルを作成するには、ファイルから特定の列の抽出:私がやりたい何は、私は次のようになりますファイル持っているのpython

o 345644 0 0 0 1 
0 454545 0 0 2 2 
0 423233 0 0 1 1 
. .  . . . . 
. .  . . . . 
. .  . . . . 

は、テキストファイルを作成するために、列2、列6を抽出しています。次のコードを書きましたが、出力ファイルには2番目の列しか含まれていません。私は所望の出力たいと思いますが、このようになります新しいファイルです:

ここ

345644 1 
454545 2 
423233 1 
.  . 
.  . 
.  . 

NEWFILE.TXT私のコードです:

dta_2path = open("file.txt","r") 
ws_2= open("newfile.txt", "w") 

for line in dta_2path: 
    if line.strip(): 
     ws_2.write("\t".join(line.split()[1:2]+ line.split()[9:10])+"\n") 

dta_2path.close() 
ws_2.close() 

これを修正する方法で任意のに役立つだろう感謝する。前もって感謝します!

+0

は午前9時10分5べきであるように思えます。しかし、あなたは1列だけを抽出しているので、 'line.split()[1]'と 'lines.split()[5]'を使わないのはなぜですか? –

+0

line.split()[1]とline.split()[5]を使用しましたが、dta_2path.close()で構文エラーが発生します。理由は分かりません。 –

答えて

1

これを試してみてください:6:

for line in dta_2path: 
    if line.strip(): 
     cols = line.split() 
     ws_2.write(cols[1] + "\t" + cols[5] + "\n") 
+0

次のエラーが表示されます。ws_2.write(cols [1]、 "\ t"、cols [5]、 "\ n") TypeError:関数は1つの引数をとります(4が指定されています)。 –

+0

Grrr!あなたは正しい、連結を使用する必要があります。私は '、'の代わりに '+'で編集しました –

+0

ありがとう!それは今意味がある。 –

0

不適切なインデックスを取得しています。 line.split(" ")[1]line.split(" ")[5]を使用するとうまくいくはずです。

+0

私はスペースも数えていたので、インデックス[1:2]と[9:10]を追加していました。私はあなたが言ったものに変わったが、うまくいかなかった。 –

関連する問題