您好!
我是python新手,我有一个3.2的python!
我有一个文件的格式如下:

Number of segment pairs = 108570; number of pairwise comparisons = 54234
'+' means given segment; '-' means reverse complement

Overlaps            Containments  No. of Constraints Supporting Overlap

******************* Contig 1 ********************

 E_180+

 E_97-

******************* Contig 2 ********************

E_254+

                    E_264+ is in E_254+

E_276+

******************* Contig 3 ********************

E_256-

E_179-

我想计算一下#****
我想得到这样的结果
contig1=2
contig2=3
contig3=2**

最佳答案

也许,这里最好使用正则表达式。您可以尝试以下操作:

import re
str = open(file).read()
pairs = re.findall(r'\*+ (Contig \d+) \*+\n([^*]*)',str)

pairs是元组的列表,其中元组的格式为('Contig x', '...')
每个元组的第二个组件包含标记后的文本
之后,您可以计算这些文本中'\n'的数量;最简单的方法是通过列表理解:
[(contig, txt.count('\n')) for (contig,txt) in pairs]

(编辑:如果不想计算空行,可以尝试:
[(contig, txt.count('\n')-txt.count('\n\n')) for (contig,txt) in pairs]

)

10-08 19:16