我编写了一个输入字符串表达式的函数,我想分割表达式并将一些内容用作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)
表达式的类型是字符串。 我尝试用这种方式转换它,但它没有在我使用的测试器上工作,因为我得到一条消息,它是一个无效的表达式。有谁知道我怎么做?
答案 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