我正在尝试使用itertools.groupby组 数据具有以下结构:
BEGIN IONS
TITLE=cmpd01_scan=23
RTINSECONDS=14.605
PEPMASS=694.299987792969 505975.375
CHARGE=2+
615.839727 1760.3752441406
628.788226 2857.6264648438
922.4323436 2458.0959472656
940.4432533 9105.5
END IONS
BEGIN IONS
TITLE=cmpd01_scan=24
RTINSECONDS=25.737
PEPMASS=694.299987792969 505975.375
CHARGE=2+
575.7636234 1891.1656494141
590.3553938 2133.4477539063
615.8339562 2433.4252929688
615.9032114 1784.0628662109
END IONS
我需要从带有“TITLE=”,“PEPMASS=”,“CHARGE=”的行中提取信息。你知道吗
我使用的代码如下:
import itertools
import re
data_file='Test.mgf'
def isa_group_separator(line):
return line=='END IONS\n'
regex_scan = re.compile(r'TITLE=')
regex_precmass=re.compile(r'PEPMASS=')
regex_charge=re.compile(r'CHARGE=')
with open(data_file) as f:
for (key,group) in itertools.groupby(f,isa_group_separator):
#print(key,list(group))
if not key:
precmass_match = filter(regex_precmass.search,group)
print precmass_match
scan_match= filter(regex_scan.search,group)
print scan_match
charge_match = filter(regex_charge.search,group)
print charge_match
但是,输出只拾取“PEPMASS=”行,如果“scan\u match”赋值在“precmass\u match”之前完成,则只打印“TITLE=”行
> ['PEPMASS=694.299987792969 505975.375\n'] [] []
> ['PEPMASS=694.299987792969 505975.375\n'] [] []
有人能指出我做错了什么吗?你知道吗
原因是
group
是一个迭代器,它只运行一次。 请找到完成此任务的修改脚本。你知道吗我可能会尝试这样解析(不使用groupby(
印刷品:
相关问题 更多 >
编程相关推荐