如果数据与字段不符,有没有办法使Python.format()成为异常?

2024-04-25 11:41:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把浮点数标准化为nn.nn号字符串,并在数字超出范围时进行一些特殊处理。你知道吗

try:
    norm = '{:5.2f}'.format(f)
except ValueError:
    norm = 'BadData' # actually a bit more complex than this 

但它不起作用:.format会自动溢出5个字符的宽度。显然,我可以检查长度norm并引发我自己的ValueError,但我是否错过了强制格式化(或旧的%格式化)引发字段宽度溢出异常的方法?你知道吗


Tags: 字符串formatnorm宽度morebit数字nn
1条回答
网友
1楼 · 发布于 2024-04-25 11:41:51

使用format()无法实现这一点。必须创建引发异常的自定义格式化程序。例如:

def format_float(num, max_int=5, decimal=2):
    if len(str(num).split('.')[0])>max_int:
         raise ValueError('Integer part of float can have maximum {} digits'.format(max_int))
    return "{:.2f}".format(num)

运行示例:

>>> format_float(123.456)
'123.46'

>>> format_float(123.4)
'123.40'

>>> format_float(123789.456)  # Error since integer part is having length more than 5
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in format_float
ValueError: Integer part of float can have maximum 5 digits

相关问题 更多 >