gpt4 book ai didi

python - 使用 python itertools.groupby 解析文本数据 block

转载 作者:太空宇宙 更新时间:2023-11-04 09:25:41 26 4
gpt4 key购买 nike

我正在尝试使用 itertools.groupby 解析 python 2.7 中的文本 block 数据具有以下结构:

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_match”赋值在“precmass_match”之前完成,则只打印“TITLE=”行;

> ['PEPMASS=694.299987792969 505975.375\n'] [] []
> ['PEPMASS=694.299987792969 505975.375\n'] [] []

有人可以指出我在这里做错了什么吗?

最佳答案

原因是 group 是一个迭代器,它只运行一次。请找到完成这项工作的修改后的脚本。

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):
if not key:
g = list(group)

precmass_match = filter(regex_precmass.search, g)
print precmass_match

scan_match = filter(regex_scan.search, g)
print scan_match

charge_match = filter(regex_charge.search, g)
print charge_match

关于python - 使用 python itertools.groupby 解析文本数据 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57775529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com