使用csv python

时间:2015-11-26 22:51:55

标签: python csv

我正在尝试编写一个以氨基酸fasta作为输入并在excel文件中输出图案的motif查找功能。

我想要的输出看起来像这样..

SeqName     M1      Hits    M2          Hits
Seq1        MN[A-Z] 3       V[A-Z]R[ML] 2
Seq2        MN[A-Z] 0       V[A-Z]R[ML] 5
Seq3        MN[A-Z] 1       V[A-Z]R[ML] 0

我一直在尝试自动生成标题,因为我正在搜索的主题超过2.(在上面的示例中,只有两个(M1和M2))。

我一直在研究的代码看起来像这样..

import re
from Bio import SeqIO
import csv
import collections

def SearchMotif(f1, motif, f2="motifs1.xls"):
    with open(f1, 'r') as fin, open(f2,'wb') as fout:
        writer = csv.writer(fout, delimiter = '\t')

        writer.writerow(['M%s'%(i+1)for i in range(0,len(motif),1)])
        writer.writerow(['Hits' for i in range(0,len(motif),1)])

这会产生

M1      M2
Hits    Hits

有什么方法可以让我的标题行看起来像我想要的输出?

命中是静态的,但M1将增加图案的长度。因此,如果我有5种不同类型的图案可供搜索,它就像是......

SeqName    M1    Hits    M2    Hits    M3    Hits    M4    Hits    M5    Hits

1 个答案:

答案 0 :(得分:1)

很简单。制作标题行,

>>> headerrow = ['SeqName']
>>> for i in range(1,6):
...   headerrow.append('M%d' % i)
...   headerrow.append('Hits')
...
>>> headerrow
['SeqName', 'M1', 'Hits', 'M2', 'Hits', 'M3', 'Hits', 'M4', 'Hits', 'M5', 'Hits']

并写。

writer.writerow(headerrow)