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