我有一个包含单项式的文字部分的字符串。我应该尝试通过将字母插入列表中来将字母与它们的指数分开,如果没有字母,则分配指数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
答案 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]