Python 无法将字符串转换为浮点
我从csv获取信息,我需要取一个字段,理论上是一个浮点,但可以为空,我是这个函数,它取浮点所在的行[I],应该返回浮点Python 无法将字符串转换为浮点,python,string,floating-point,floating-point-conversion,floating-point-exceptions,Python,String,Floating Point,Floating Point Conversion,Floating Point Exceptions,我从csv获取信息,我需要取一个字段,理论上是一个浮点,但可以为空,我是这个函数,它取浮点所在的行[I],应该返回浮点 def fun(x): if not(x): x=0 x=float(x) else: x = float(x) return x 但当我尝试使用它时,它会抛出一个错误,告诉我“float()参数必须是字符串或数字”好的,那么 def fn(x): try: return floa
def fun(x):
if not(x):
x=0
x=float(x)
else:
x = float(x)
return x
但当我尝试使用它时,它会抛出一个错误,告诉我“float()参数必须是字符串或数字”好的,那么
def fn(x):
try:
return float(x)
except (ValueError, TypeError):
return 0.0
输出:
1.0
0
尝试修复您的格式,这不是合法的python。您将传递什么作为x?@padraiccnningham例如fun(第[11]行),csv中的第[11]行为空,是的,但您是否始终认为第[11]行可以作为浮点进行解析?我想试一试/不试一试会好得多。什么类型的
x
?添加一个print(type(x))
作为fun
的第一行,并向我们展示它的意思!)仍然告诉我“float()参数必须是字符串或数字”@Tabbz,是否传递列表、元组等,,?您需要打印行[11]
并准确查看您是什么passing@Tabbz,except(ValueError,TypeError):
将捕获TypeError,但是当您得到错误时,您应该真正看到第[11]行是什么。“print row[11]”在出现错误之前显示了什么?我像这样打印“row[11]”+str(row[11])打印“row[12]”+str(row[12])打印“row[13]”+str(row[13]),你可以知道我打印的是什么,但是如果我只打印第[11]行,打印方式是“ok”,那么也可以捕捉到类型错误,它将捕获空字符串,除了(ValueError,TypeError):
1.0
0