我想制作一个将混合数字和分数(作为字符串)转换为 float 的函数。下面是一些示例:
'1 1/2' -> 1.5
'11/2' -> 5.5
'7/8' -> 0.875
'3' -> 3
'7.7' -> 7.7
我目前正在使用此功能,但我认为它可以改进。它也不处理已经以十进制表示的数字
def mixedtofloat(txt):
mixednum = re.compile("(\\d+) (\\d+)\\/(\\d+)",re.IGNORECASE|re.DOTALL)
fraction = re.compile("(\\d+)\\/(\\d+)",re.IGNORECASE|re.DOTALL)
integer = re.compile("(\\d+)",re.IGNORECASE|re.DOTALL)
m = mixednum.search(txt)
n = fraction.search(txt)
o = integer.search(txt)
if m:
return float(m.group(1))+(float(m.group(2))/float(m.group(3)))
elif n:
return float(n.group(1))/float(n.group(2))
elif o:
return float(o.group(1))
else:
return txt
谢谢!
2.6 有 fractions
模块。只需在空格处拆分字符串,将 block 提供给 fractions.Fraction()
,针对结果调用 float()
,然后将它们全部相加。
我是一名优秀的程序员,十分优秀!