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

使用Python re模块分解分子式 提取元素及对应数量生成字典

分子式元素拆分功能实现修正方案

原代码问题分析

  • 缺少re模块导入,直接运行会抛出名称错误
  • 正则规则存在多处逻辑错误:
    1. 元素匹配规则[A-Z][a-z]+要求元素名必须包含至少1个小写字母,无法匹配C、N、O这类单字母元素
    2. 数字匹配规则\[0-9]+多了不必要的转义符\,会匹配字面量[而非数字,且强制要求至少1个数字,无法匹配没有后续数字的元素(如示例中的N)
    3. 分组设计冗余混乱,不需要多余的name2命名分组

修正后完整代码

如果需要数字保持字符串类型、无数字时为空字符串,可直接用以下代码:

import re

Formula = "C16H21NO2Na3"
# 正则第一组匹配元素名:大写开头,可选1个小写字母;第二组匹配后续数字,允许为空
pat = re.compile(r'([A-Z][a-z]?)(\d*)')
molecule = dict(pat.findall(Formula))
print(molecule)

如果需要将非空的数字转为整数类型(匹配你给出的期望输出格式),调整为以下逻辑:

import re

Formula = "C16H21NO2Na3"
pat = re.compile(r'([A-Z][a-z]?)(\d*)')
molecule = {}
for elem, num in pat.findall(Formula):
    molecule[elem] = int(num) if num else ''
print(molecule)

运行输出

{'C': 16, 'H': 21, 'N': '', 'O': 2, 'Na': 3}

内容的提问来源于stack exchange,提问作者Van3

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:54:03