我正在使用biopython包,我想像tsv文件一样保存结果。此输出从print到tsv。
for record in SeqIO.parse("/home/fil/Desktop/420_2_03_074.fastq", "fastq"):
print ("%s %s %s" % (record.id,record.seq, record.format("qual")))
谢谢。
答案 0 :(得分:16)
我首选的解决方案是使用CSV模块。这是一个标准模块,所以:
以下代码段应该为您解决问题:
#! /bin/env python3
import csv
with open('records.tsv', 'w') as tsvfile:
writer = csv.writer(tsvfile, delimiter='\t', newline='\n')
for record in SeqIO.parse("/home/fil/Desktop/420_2_03_074.fastq", "fastq"):
writer.writerow([record.id, record.seq, record.format("qual")])
请注意,这适用于Python 3.x.如果您使用的是2.x,则open
和writer = ...
会略有不同。
答案 1 :(得分:4)
这很简单,而不是打印它,你需要将它写入文件。
with open("records.tsv", "w") as record_file:
for record in SeqIO.parse("/home/fil/Desktop/420_2_03_074.fastq", "fastq"):
record_file.write("%s %s %s\n" % (record.id,record.seq, record.format("qual")))
如果您想命名文件中的各个列,那么您可以使用:
record_file.write("Record_Id Record_Seq Record_Qal\n")
所以完整的代码可能如下所示:
with open("records.tsv", "w") as record_file:
record_file.write("Record_Id Record_Seq Record_Qal\n")
for record in SeqIO.parse("/home/fil/Desktop/420_2_03_074.fastq", "fastq"):
record_file.write(str(record.id)+" "+str(record.seq)+" "+ str(record.format("qual"))+"\n")
答案 2 :(得分:3)
如果您想使用.tsv
在TensorBoard中标记单词嵌入,请使用以下代码段。它使用CSV模块(请参阅Doug's answer)。
# /bin/env python3
import csv
def save_vocabulary():
label_file = "word2context/labels.tsv"
with open(label_file, 'w', encoding='utf8', newline='') as tsv_file:
tsv_writer = csv.writer(tsv_file, delimiter='\t', lineterminator='\n')
tsv_writer.writerow(["Word", "Count"])
for word, count in word_count:
tsv_writer.writerow([word, count])
word_count
是这样的元组列表:
[('the', 222594), ('to', 61479), ('in', 52540), ('of', 48064) ... ]
答案 3 :(得分:1)
以下代码段:
from __future__ import print_function
with open("output.tsv", "w") as f:
print ("%s\t%s\t%s" % ("asd", "sdf", "dfg"), file=f)
print ("%s\t%s\t%s" % ("sdf", "dfg", "fgh"), file=f)
产生包含
的文件output.tsv
asd sdf dfg
sdf dfg fgh
所以,在你的情况下:
from __future__ import print_function
with open("output.tsv", "w") as f:
for record in SeqIO.parse("/home/fil/Desktop/420_2_03_074.fastq", "fastq"):
print ("%s %s %s" % (record.id,record.seq, record.format("qual")), file=f)
答案 4 :(得分:0)
我更喜欢在此类代码中使用join()
:
for record in SeqIO.parse("/home/fil/Desktop/420_2_03_074.fastq", "fastq"):
print ( '\t'.join((str(record.id), str(record.seq), str(record.format("qual"))) )
'标签'字符为\t
,连接函数使用(3)参数并使用中间的选项卡打印它们。