Skip to main content
 首页 » 编程设计

python之拆分一个字符串并将子字符串保存到字典中。 Python

2025年05月04日2252php

我有一个这样的文本文件:

771 776 #1 556.766700(2) 
538 #2 1069.652700(2) 
531 #3 1074.407600(2) 
81 84 89 94 111 #4 1501.062900(2) 
85 91 #5 782.298900(3) 
32 42 66 71 90 95 101 #6 904.016500(3) 

我想将子字符串拆分并保存到不同的变量中,如下所示: 例如在第 1 行:

scans= 771 776, uid = 1 mz = 556.766700, z = 2 

我正在尝试使用以下代码,但我需要有关正则表达式的帮助:

f = open(filename, 'r') 
par_info=[] 
for rows in f: 
    re.sub('\#(.+)\s(.+)\((.+)\+', scans=\g<1>, uid=\g<2>, mz = int(\g<3>),    z=int(\g<4>), rest) 
    info={'sc_num':scans, 'ident':uid, 'mass':mz, 'charge':z} 
    par_info.append(info) 

请您参考如下方法:

您可以使用命名组:

>>> import pprint 
>>> import re 
>>> r = re.compile(r'(?P<scans>.*?)\s+#(?P<uid>\d+)\s+(?P<mz>\d+\.\d+)\((?P<z>\d+)\)') 
>>> with open('abc1') as f: 
        par_info = [r.search(line).groupdict() for line in f] 
...      
>>> pprint.pprint(par_info) 
[{'mz': '556.766700', 'scans': '771 776', 'uid': '1', 'z': '2'}, 
 {'mz': '1069.652700', 'scans': '538', 'uid': '2', 'z': '2'}, 
 {'mz': '1074.407600', 'scans': '531', 'uid': '3', 'z': '2'}, 
 {'mz': '1501.062900', 'scans': '81 84 89 94 111', 'uid': '4', 'z': '2'}, 
 {'mz': '782.298900', 'scans': '85 91', 'uid': '5', 'z': '3'}, 
 {'mz': '904.016500', 'scans': '32 42 66 71 90 95 101', 'uid': '6', 'z': '3'}]