0

私はコーディングが初めてで、この質問を解決する方法を見つけようとしています: # で始まるすべてのヘッダーと、7 列目に "PASS" という単語がある行を見つけて、それらを new.vcf に出力します。パスは他の列に表示される場合がありますが、7 番目の列では単独ですべて大文字で表示されます。これらのファイルはタブ区切りです。質問の最初の部分は既に完了していますが、7 列目から「PASS」を引き出す方法がわかりません。これが私がこれまでに持っているコードの合計です。

#!/usr/bin/env python
myfile= open("temp.vcf","r")
outfile= open("new.vcf","w")            
for data in myfile: 
    data = data.strip("\t")
    if data[0] == "#":
        outfile.write(data +"\n")
myfile.close()
outfile.close()

myfile=open("temp.vcf","r") 
outfile=open("new.vcf","a")

data=myfile.readline()
while data == "PASS":
    outfile.write(data+"/t")
    data=myfile.readline()  

myfile.close()
outfile.close()
4

3 に答える 3

0

区切り文字で行を分割し、「PASS」のインデックス 6 を確認します

line = "#   a   b   c   d   e   PASS    f"

columns = line.split("   ")

print columns[6]
于 2013-02-22T03:25:42.817 に答える
0

ラインを変えてみたり、

while data == "PASS":

while data.find("PASS") >= 0 :

文字列で find() メソッドを使用するのはどれですか?

于 2013-02-22T03:22:55.907 に答える
0

まず、ファイルを 2 回開いて閉じる必要はありません。両方の操作を同時に実行する必要があります。次に、特定の列のデータを読み取るには、各行をそれらの列に分割する必要があります。str.splitあなたの友達です。

#!/usr/bin/env python
myfile= open("temp.vcf","r")
outfile= open("new.vcf","w")            
for data in myfile:
    if data[0] == "#":
        outfile.write(data + "\n")
        continue
    columns = data.split("\t")
    if columns[6] == "PASS":
        outfile.write(data + "\n")
myfile.close()
outfile.close()
于 2013-02-22T03:28:19.990 に答える