python - 分析化学方程式,在Python中将括号外的子索引相乘

标签 python formula chemistry

所以我对 Python 有点陌生。现在我正在制作一个化学方程式平衡器,但我陷入了困境,因为我现在想做的是,如果您在括号中收到一个化合物,外面有一个子索引(如下所示:(NaCl)2),我想将其扩展为这种形式:Na2Cl2(并且还去掉括号)。现在我已经成功地用这段代码去掉了括号:

import string
import re

linealEquation = ""

def linealEq(equation):
    #missing code
    allow = string.letters + string.digits + '+' + '-' + '>'
    linealEquation = re.sub('[^%s]' % allow, '', equation)
    print linealEquation

linealEq("(CrNa)2 -> Cr+Na")

但是我如何跟踪字符串并将括号中的索引相乘?

我知道如何迭代字符串,但我想不出如何具体乘以子索引。

感谢您的帮助。

最佳答案

可能不是最短的解决方案,并且不适用于所有情况,但适用于您的示例:

left,  right = equation.split('->')
exp = left.strip()[-1]
inside = left[1:-3]
c2 = re.findall('[A-Z][^A-Z]*', inside)
l = [s + exp for s in c2]
res =''.join(l)

注意您可以添加打印语句以更好地理解每个步骤...

关于python - 分析化学方程式,在Python中将括号外的子索引相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29581097/

相关文章:

algorithm - 人气公式? (基于 "like it"、 "comments"、 "views")

java - 解析表示化学 react 的字符串并验证该 react 是否可能

python - 使用 Tkinter 和 python 进行交互式元素周期表

r - 如何解析化学式以获得原子成分?

python - Pycuda - 如何添加-ccbin clang-3.8

python - 使用 Jinja2 的 HTML 模板

javascript - 如何以编程方式确定方格图案中的方格状态?

python - SQLAlchemy 添加查询条件

python - 使用 lxml 将多个元素添加到 xml

python - 莱布尼茨行列式公式复杂度