无法将字符串转换为浮点数
Posted
技术标签:
【中文标题】无法将字符串转换为浮点数【英文标题】:Cannot convert string to float 【发布时间】:2015-01-17 01:36:32 【问题描述】:我从 csv 获取信息,我需要获取一个理论上是浮点数的字段,但可以为空,我是这个函数,它获取浮点数所在的行 [i],并且应该返回浮动,
def fun(x):
if not(x):
x=0
x=float(x)
else:
x = float(x)
return x
但是当我尝试它时,这个错误告诉我“float () 参数必须是字符串或数字”
【问题讨论】:
尝试修复你的格式,这不是合法的python。 你作为 x 传递了什么? @PadraicCunningham 例如 fun(row[11]),而 csv 中的 row[11] 为空, 是的,但你总是积极的 row[11] 将能够被解析为浮点数吗?我认为 try/except 会好得多 那么是x
是什么类型?添加一个print(type(x))
作为fun
的第一行,然后告诉我们它的内容!-)
【参考方案1】:
好的,怎么样
def fn(x):
try:
return float(x)
except (ValueError, TypeError):
return 0.0
【讨论】:
仍然告诉我“float() 参数必须是字符串或数字” @Tabbz,你是在传递一个列表、一个元组等吗?你需要print row[11]
看看你到底在传递什么
@Tabbz,except (ValueError,TypeError):
将捕获 TypeError 但您应该真正看到当您收到错误时 row[11] 是什么。错误前的`print row[11]`显示什么?
im 像这样打印 print 'row[11] '+str(row[11]) print 'row[12] '+str(row[12]) print 'row[13] '+ str(row[13]),只是你可以知道我在打印什么,但如果我只打印 row[11] 打印像“”
好的,所以也只需捕获 TypeError,它将捕获空字符串 except (ValueError,TypeError):
【参考方案2】:
def fun(x):
try:
x = float(x)
except ValueError:
x = 0
return x
print fun("1")
print fun(' ')
输出:
1.0
0
【讨论】:
以上是关于无法将字符串转换为浮点数的主要内容,如果未能解决你的问题,请参考以下文章
ValueError:无法将字符串转换为浮点数:'2100 - 2850'
我收到 ValueError:无法将字符串转换为浮点数:'8,900' [重复]