Получить химические элементы в виде списка с помощью регулярного выраженияPython

Программы на Python
Anonymous
Получить химические элементы в виде списка с помощью регулярного выражения

Сообщение Anonymous »

У меня есть регулярное выражение: [A-Z][a-z]?\d*|\((?:[^()]*(?:\(.*\))?[^()]*)+\ )\d+
Это регулярное выражение возвращает все простые и вложенные химические формулы, например: O2, SO4, Al2(SO4)3.
Я хочу получить эти химические формулы и использовать их для написания программы для балансировки химических уравнений.
Теперь я хочу улучшить это регулярное выражение, чтобы оно могло разделять элементы и количества и поместите их в список или кортеж, например:

Код: Выделить всё

O2 -> ('O', 2)
SO4 -> (('S', 1), ('O', 4))
Al2(SO4)3 -> ((('Al', 2), ((('S', 1), ('O', 4)),3)), 1)
Это помогает мне умножить второе значение, которое является той же величиной, на первые значения и упростить уравнение, чтобы я мог его решить. Но я не знаю, как это сделать с помощью регулярных выражений, если это возможно.
Если это невозможно, сообщите мне решение с помощью Python или скажите, есть ли у вас лучший способ упростить эти уравнения или решить их. их.
Я хочу, насколько это возможно, избегать использования библиотеки.


Подробнее здесь: https://stackoverflow.com/questions/783 ... with-regex

Вернуться в «Python»