Python string.format():将NAN格式化为';一些文本';?
我正在使用Python string.format():将NAN格式化为';一些文本';?,python,format,string-formatting,nan,Python,Format,String Formatting,Nan,我正在使用string.format()将一些数字格式化为字符串。format()是否有显示特定文本(例如“不可用”)而不是nan的选项?我找不到它。或者我必须手动进行更换 为了澄清评论中提出的问题,我们提出了一个标题相似但背景不同的问题。我的问题是不同的,因为这个问题的作者想要得到'nan'作为输出,但是因为一个已经修复的bug而得到了其他东西 相反,我想了解format()是否有一个内置选项,可以用其他文本替换“nan”。当然,我非常感谢我可以自己手动进行替换,但我只是想知道这是否是form
string.format()
将一些数字格式化为字符串。format()
是否有显示特定文本(例如“不可用”)而不是nan的选项?我找不到它。或者我必须手动进行更换
为了澄清评论中提出的问题,我们提出了一个标题相似但背景不同的问题。我的问题是不同的,因为这个问题的作者想要得到'nan'作为输出,但是因为一个已经修复的bug而得到了其他东西
相反,我想了解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__()
接下来,您可以获得:
>>> a = myfloat('nan')
>>> a
nan
>>> print(a)
Not available
如果希望a
的表示在解释器上显示为“不可用”,则必须替代\uuuu repr\uuu
交替攻击
为什么不直接调用格式化字符串上的replace
?(假设其中没有其他读取“nan”的字符串部分)
我确实看过那个问题,但它是不同的。该问题的作者希望得到“nan”作为输出,但由于一个已经修复的bug,他得到了其他东西。相反,我得到了'nan',但想了解format()是否有一个选项来显示除'nan'以外的内容,事实上,在我的脚本中调用replacer()。我只是想知道format()是否有一个内置选项——实际上,它比其他任何东西都更令人好奇。谢谢
>>> a = float('nan')
>>> print('This number is ' + ('%0.2f' % a).replace('nan', 'not available'))
This number is not available