无法将字符串转换为浮点数

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:无法将字符串转换为浮点数:'Bad'

ValueError:无法将字符串转换为浮点数:'2100 - 2850'

我收到 ValueError:无法将字符串转换为浮点数:'8,900' [重复]

ValueError:无法将字符串转换为浮点数:'62,6'

ValueError:无法将字符串转换为浮点数:'Mme'

ValueError:无法将字符串转换为浮点数:''20,99''