我在编码方面很陌生,我正试图弄清楚如何解决这个问题: 找到所有以#开头的标题和第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()
答案 0 :(得分:0)
您是否尝试过改变行,
while data == "PASS":
到
while data.find("PASS") >= 0 :
在字符串上使用find()方法?
答案 1 :(得分:0)
按分隔符拆分行,并检查索引6是否为“PASS”
line = "# a b c d e PASS f"
columns = line.split(" ")
print columns[6]
答案 2 :(得分:0)
首先,您无需打开和关闭文件两次。您应该同时执行这两个操作。其次,要读取特定列中的数据,您需要将每一行分成这些列。 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()