如何用Python统计分子式字符串的原子数量并生成合并后分子式
Python 分子式原子数量统计实现方案
功能说明
完全符合指定的3条规则:
- 仅统计O、C、N、H、S五种原子
- 字母后无数字时原子数量默认记为1
- 自动合并相同原子数量,输出标准化分子式
实现思路
用正则表达式直接拆分分子式中的「原子符号」和「对应数量」,遍历匹配结果累加计数后按固定顺序拼接输出即可,逻辑简洁不易出错。
完整代码实现
import re def standardize_formula(raw_formula): # 初始化5种原子的计数 count_map = {"C": 0, "H": 0, "N": 0, "O": 0, "S": 0} # 正则匹配每一组原子+数字的组合 atom_pairs = re.findall(r"([CHNOS])(\d*)", raw_formula) for atom, num_str in atom_pairs: count = int(num_str) if num_str else 1 count_map[atom] += count # 按C→H→N→O→S的顺序拼接结果,数量为1时省略数字 result = [] for atom in ["C", "H", "N", "O", "S"]: cnt = count_map[atom] if cnt == 0: continue result.append(f"{atom}{cnt if cnt>1 else ''}") return "".join(result)
测试验证
输入示例字符串测试:
test_input = "C3H7NO2C3H7NO2S" print(standardize_formula(test_input))
输出结果为C6H14N2O4S,和预期完全一致。
内容的提问来源于stack exchange,提问作者Shira
相关产品推荐
相关产品推荐

