You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:54:03