Pyt*_*ous 6 python format nan string-formatting
我正在使用string.format()
将一些数字格式化为字符串。是否format()
可以选择显示特定文本(例如“不可用”)而不是 nan?我找不到。还是我必须手动更换?
为了澄清评论中提出的观点,这里提出了一个标题相似但上下文不同的问题。我的问题是不同的,因为该问题的作者想要将 'nan' 作为输出,但由于已修复的错误而得到其他内容。
相反,我想了解 format() 是否具有将“nan”替换为其他文本的内置选项。当然,我非常感谢我可以自己手动进行替换,但只是想知道这是否是format()
.
我不认为你可以用 来实现这一点format
,或者至少,我不知道如何实现。我知道它可以完成的唯一方法是子类float
,如下所示:
from math import isnan
class myfloat(float):
def __str__(self):
if isnan(self):
return 'Not available'
else:
return super(myfloat, self).__str__()
Run Code Online (Sandbox Code Playgroud)
之后,您可以获得:
>>> a = myfloat('nan')
>>> a
nan
>>> print(a)
Not available
Run Code Online (Sandbox Code Playgroud)
如果您希望 的表示a
在解释器上显示为“不可用”,那么您必须__repr__
改用覆盖。
替代黑客
为什么不直接调用replace
格式化的字符串?(假设那里没有其他字符串部分读取“nan”)。
>>> a = float('nan')
>>> print('This number is ' + ('%0.2f' % a).replace('nan', 'not available'))
This number is not available
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2130 次 |
最近记录: |