分割一个由字母和指数组成的python字符串

时间:2020-05-17 09:44:42

标签: python python-3.x math

我有一个包含单项式的文字部分的字符串。我应该尝试通过将字母插入列表中来将字母与它们的指数分开,如果没有字母,则分配指数1。
字符串就像a^5bc^0.5

str = a^5bc^0.5
letters, exponents = split_monomial(str)
print(letters) # ['a','b','c']
print(exponents) # [5,1,0.5]

这是我尝试过的,但我认为存在概念错误

_ = True
numeric_cache = ''
        for i in range(len(litteral_part)):
            if litteral_part[i] in letters:
                if i > 0:
                    if not _:
                        litteral_e.append(float(numeric_cache))
                    litteral_e.append(1.0)
                _ = True
                litteral.append(litteral_part[i])
            elif litteral_part[i] == '^':
                _ = False
            elif litteral_part[i] in numbers:
                if not _:
                    numeric_cache = numeric_cache + litteral_part[i]

litteral_part是str

1 个答案:

答案 0 :(得分:1)

您可以将re模块用于此任务的某些后处理:

import re

s = 'a^5bc^0.5'

letters, exponents = zip(*re.findall(r'([a-z])(?:\^(\-?\d+\.?\d*))?', s))

letters = list(letters)
exponents = [1 if n == '' else float(n) for n in exponents]

print(letters)
print(exponents)

打印:

['a', 'b', 'c']
[5.0, 1, 0.5]