我正在使用python将化学公式转换为元素的比例。Python:从非解释字符串中获取数字。使用正则表达式?
例如: 我有一个列表["Ti5Cu3", "TiCu2", "Ti2Cu3"]
作为输入列表,并且想要将它转换为[5/(5+3), 1/(1+2), 2/(2+3)]
。
如何获得元素标记后面的数字?我认为re
库可能会有用吗?以及如何使用它来解决我的问题?
我的解决办法是现在:
def formula2por(s):
if s == "Ti":
return 1
elseif s == "Cu":
return 0
else:
t = re.match(r'Ti(.*)Cu(.*)', s).groups()
# pdb.set_trace()
if t[0] is not '':
x = int(t[0])
else:
x = 1
if t[1] is not '':
y = int(t[1])
else:
y = 1
return round(x/(x+y), 4)
不过,我认为这是杂乱而不是这个问题的一个Python的方式。
谢谢。
有趣的问题,但你究竟是在将这些分子转换成什么?钛和铜的分子量不是5,3,2等。我问这是因为我不明白你的转换,因此不能为你的问题建议一个正则表达式。 –
我想你的第一个任务是在每个大写字母前分割字符串。 –
你的字符串是什么格式?你只有2元素分子吗?你可以有C2H10O6吗?你想要结果是数字还是字符串?例如,字符串“1 /(1 + 2)”表示一个等于1/2的计算(你想要数字还是字符串?) – Thanassis