计算文本中的字母

时间:2011-11-01 17:57:59

标签: python

我的文本文件如下......

S1

  

MPPRRSIVEVKVLDVQKRRVPNKHYVYIIRVTWSSGATEAIYRRYSKFFDLQMQMLDKFP   MEGGQKDPKQRIIPFLPGKILFRRSHIRDVAVKRLIPIDEYCKALIQLPPYISQCDEVLQ   FFETRPEDLNPPKEEHIGKKKSGNDPTSVDPMVLEQYVVVADYQKQESSEISLSVGQVVD

S2

  

MAEVRKFTKRLSKPGTAAELRQSVSEAVRGSVVLEKAKLVEPLDYENVITQRKTQIYSDP   LRDLLMFPMEDISISVIGRQRRTVQSTVPEDAEKRAQSLFVKECIKTYSTDWHVVNYKYE   DFSGDFRMLPCKSLRPEKIPNHVFEIDEDCEKDEDSSSLCSQKGGVIKQGWLHKANVNST

。 。

我想计算每个序列输出中的字母'P'应该是

> S1:10

> S2:20

按如下方式实现此python脚本

infile=open("file1.txt",'r')

out=open("file2.csv",'w')

for line in infile:

     line = line.strip("\n")

   if line.startswith('>'):

        name=line

   else:

        pattern = line.count('P') 

        print '%s:%s' %(name,pattern)

        out.write('%s:%s\n' %(name,pattern))

它读取行并给出如下结果

> S1:2

> S1:3

> S1:5

> S2:10

> S2:10

但我除了以下内容如下

> S1:10

> S2:20 。 。

任何人都可以帮助如何做到这一点......

先谢谢 镍

2 个答案:

答案 0 :(得分:1)

total = 0
for line in infile:
    line = line.strip("\n")
    if line.startswith('>'):
        name = line
    else:
        pattern = line.count('P') 
        total += pattern
        print '%s:%s' %(name,pattern)

#this goes outside the for loop
out.write('%s:%s\n' %(name,total))

答案 1 :(得分:1)

不要逐行解析文件。只需通过字符计算您要查找的字符的出现次数来遍历整个文件字符。