所以我对 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/