1

所以我对Python有点陌生。现在我正在制作一个化学方程式平衡器,但我被卡住了,因为我现在想做的是,如果你在括号中收到一个化合物,外面有一个子索引(像这样: (NaCl) 2),我想要将其扩展为这种形式: Na 2 Cl 2(也去掉括号)。现在我已经设法用这段代码去掉括号:

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")

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

我知道如何迭代一个字符串,但我想不出如何专门乘以子索引。

谢谢您的帮助。

4

1 回答 1

2

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

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)

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

于 2015-04-11T18:15:09.830 回答