将字符串转换为float python N / A.

时间:2014-06-16 18:06:39

标签: python

我正在使用ystockquote.py,我正在尝试检索有关特定股票的信息。从我的代码中检索到的一些信息可能是N / A,如下面的行:

properties['ask_realtime'] = float(ystockquote.get_ask_realtime(stock))

由于ystockquote.get_ask_realtime(stock)将返回一个字符串,那么检查以确保它不是'N / A'字符串的最佳,优雅的方法是什么?我有更多的行与改变字符串浮动有关,所以我真的需要一个很好的方法来做到这一点。

2 个答案:

答案 0 :(得分:3)

为什么不定义自己的浮点转换器:

def float_or_na(value):
    return float(value if value != 'N/A' else 'nan')

或上面的评论:

def float_or_na(value):
    return float(value) if value != 'N/A' else None

将NULL值输入数据库。

答案 1 :(得分:2)

这正是try...except

所做的
try: 
    #Code that assumes value is float
    properties['ask_realtime'] = float(ystockquote.get_ask_realtime(stock))
except ValueError:
    #Code that runs as soon as a ValueError pops up
else:
    #Code that runs only if try branch finishes successfully (optional)
finally:
    #Code that runs after try or except branch finishes (optional)

有些注意事项:

  • 您不需要为except分支指定确切的错误,但它被认为是一种好的形式,有助于防止屏蔽错误。如果您想处理多种类型的错误,则每个
  • 需要except分支
  • except分支仅在引发指定异常时运行(或者如果未指定则引发任何异常)
  • finally分支将始终运行。它是可选的,但有时非常方便
  • 在引发异常的行之后try分支内的任何行都不会被执行
  • exceptfinally分支中引发的任何异常都将被正常抛出

示例

try:
    print 1
    float(val)
    print 2
except ValueError:
    print 3
else:
    print 4
finally:
    print 5

使用val = "4.2"上面的代码打印

1
2
4
5

使用val = "a"上面的代码打印

1
3
5