2015-04-11 3 views
0

Так что я немного новый для Python. Сейчас я делаю уравнительный баланс химических веществ, и я застрял, потому что сейчас я хочу сделать это, если вы получите соединение в скобках с субиндексом снаружи (например: (NaCl)), Я хочу расширить его до такой формы: Na Cl (а также избавиться от скобок). Сейчас мне удались только избавиться от скобки с этим кодом:Проанализируйте химическое уравнение, умножьте подиндексы на внешнюю скобку в Python

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

Но как я могу проследить строку и умножить индексы из круглых скобок?

Я знаю, как перебирать строку, но я не могу придумать, как конкретно умножить подиндекс.

Спасибо за помощь.

ответ

1

Вероятно, не кратчайшее решение и не будет работать во всех случаях, но работает на вашем примере:

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) 

нотабене вы можете добавить заявления для печати, чтобы лучше понять каждый шаг ...

+0

mmm. да, я понимаю, что ты сделал. Как вы говорите, это не работает для всех случаев, но я думаю, теперь у меня есть лучший ключ к тому, что я могу сделать. Спасибо чувак! – brgt

 Смежные вопросы

  • Нет связанных вопросов^_^