您好!
我是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]
)