有点像这个问题,但是相反。
给定类似1,1/2或的字符串,1 2/3将其转换为浮点数的最佳方法是什么?我正在考虑根据情况使用正则表达式,但是也许有人知道更好的方法或预先存在的解决方案。我希望可以使用eval,但是我认为第3种情况可以避免这种情况。
1
1/2
1 2/3
eval
我稍微调整了詹姆斯的回答。
def convert_to_float(frac_str): try: return float(frac_str) except ValueError: num, denom = frac_str.split('/') try: leading, num = num.split(' ') whole = float(leading) except ValueError: whole = 0 frac = float(num) / float(denom) return whole - frac if whole < 0 else whole + frac print convert_to_float('3') # 3.0 print convert_to_float('3/2') # 1.5 print convert_to_float('1 1/2') # 1.5 print convert_to_float('-1 1/2') # -1.5
http://ideone.com/ItifKv