将字符串转换为浮点python不适用
我正在使用ystockquote.py,并试图检索与特定股票相关的信息。从我的代码中检索到的某些信息可能是不适用的,如下所示:将字符串转换为浮点python不适用,python,Python,我正在使用ystockquote.py,并试图检索与特定股票相关的信息。从我的代码中检索到的某些信息可能是不适用的,如下所示: properties['ask_realtime'] = float(ystockquote.get_ask_realtime(stock)) 由于ystockquote.get\u ask\u realtime(stock)将返回一个字符串,那么最好的、优雅的检查方法是什么,以确保它不是“N/a”字符串?我有更多的行与将字符串更改为浮点有关,因此我确实需要一种很好的
properties['ask_realtime'] = float(ystockquote.get_ask_realtime(stock))
由于ystockquote.get\u ask\u realtime(stock)将返回一个字符串,那么最好的、优雅的检查方法是什么,以确保它不是“N/a”字符串?我有更多的行与将字符串更改为浮点有关,因此我确实需要一种很好的方法来完成此操作。为什么不定义您自己的浮点转换器:
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
将空值输入数据库。为什么不定义自己的浮点转换器:
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
获取数据库中的空值。这正是我们所做的
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
- 不管怎样,
分支都将始终运行。它是可选的,但有时非常方便finally
- 引发异常的行之后的
分支中的任何行都不会执行try
- 在
或分支中引发的任何异常(除了
分支)都将正常抛出最终
try:
print 1
float(val)
print 2
except ValueError:
print 3
else:
print 4
finally:
print 5
使用val=“4.2”
打印上述代码
1
2
4
5
1
3
5
使用val=“a”
打印上述代码
1
2
4
5
1
3
5
这正是我们的目的
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
- 不管怎样,
分支都将始终运行。它是可选的,但有时非常方便finally
- 引发异常的行之后的
分支中的任何行都不会执行try
- 在
或分支中引发的任何异常(除了
分支)都将正常抛出最终
try:
print 1
float(val)
print 2
except ValueError:
print 3
else:
print 4
finally:
print 5
使用val=“4.2”
打印上述代码
1
2
4
5
1
3
5
使用val=“a”
打印上述代码
1
2
4
5
1
3
5
如果字符串是
N/A
,会发生什么<代码>无?什么都不应该分配?其他选项?我不希望分配任何内容,因为我正在尝试获取这些信息并将其放入Django的数据库中。如果字符串为N/a
,会发生什么情况<代码>无?什么都不应该分配?其他选项?我不希望分配任何内容,因为我正在尝试获取这些信息并将其放入Django的数据库中。如果我有一个浮点数列表并对其排序,是否会处理包含“nan”的浮点数,并将其置于列表的末尾,假设排序是从最大到最小的?@user2548635:很遗憾,不是这样。但是你可以很容易地自己排序,例如,排序(somelist,key=lambda x:(~math.isnan(x),x),reverse=True)
。如果我有一个浮点数列表并对它们进行排序,那么包含“nan”的浮点数是否会被处理并位于列表的末尾,假设排序从最大到最小?@user2548635:不幸的是不会。但是你可以很容易地自己排序,例如,排序(somelist,key=lambda x:(~math.isnan(x),x),reverse=True)
。