如何在python中将字符串转换为float?

时间:2016-11-19 15:42:53

标签: python

我编写了一个输入字符串表达式的函数,我想分割表达式并将一些内容用作float。我试着写num1 = float(temp[0]) 但我收到一条错误消息,说我无法将字符串转换为浮点数。 我怎么能在python中做到这一点? 这是我的代码的一部分:

def calculate_from_string(expression):
    temp = expression.split(" ")
    num1 = float(int(temp[0]))
    num2 = float(int(temp[1]))
    oop = temp[2]
    return calculate_mathematical_expression(num1, num2, oop)

表达式的类型是字符串。 我尝试用这种方式转换它,但它没有在我使用的测试器上工作,因为我得到一条消息,它是一个无效的表达式。有谁知道我怎么做?

2 个答案:

答案 0 :(得分:0)

如果您向我们提供了一小段数据,那将是件好事。 我不知道你在做什么,但这应该有用(而且对我有用):

str_expression = '1 57 34'
num = [float(i) for i in str_expression.split()]

你也可以使用numpy数组:

import numpy as np

nums = np.array(str_expression.split(), dtype=np.float)

如果你的表达式包含一些字母数字,你可以使用正则表达式来提取数字。 例如:

str_expression = 'bdjsbd bdka2 23 (34 >> 4) * 2ds'

提取数字的正确方法是:

import re

nums = [float(i) for i in re.findall('\d+', str_expression)]

答案 1 :(得分:-1)

def calculate_from_string(expression):
    temp = expression.split(" ")
    num1 = float(temp[0])
    num2 = float(temp[1])
    oop = temp[2]
    return calculate_mathematical_expression(num1, num2, oop)

float( int( "123.45" ) )会引发ValueError,因为int expect [0-9]+但字符串中有.,这会引发值错误。

第二点如果你打电话给int(4.5)那么它会给你4,所以在使用int函数时要小心。

但如果您的输入字符串不包含.,则可以使用float(int(string))。 float(int("1234"))会给你1234.0