如何在Pytdanic浮点验证中过滤出NaN?
from pydantic import BaseModel
class MySchema(BaseModel):
float_value: float
如何在Pytdanic浮点验证中过滤出NaN?
from pydantic import BaseModel
class MySchema(BaseModel):
float_value: float
您可以使用confloat
并将上限设置为无穷大,或将下限设置为负无穷大.由于与NaN的所有数字比较都返回False,这将使pydantic拒绝NaN,同时保持所有其他行为相同(包括解析、从int到float的转换等).
from pydantic import BaseModel, confloat
class MySchema(BaseModel):
float_value: confloat(ge=-float('inf'))
# or:
# float_value: confloat(le=float('inf'))
注意:您还可以使用confloat
的gt
和lt
参数而不是ge
和le
来排除无穷大值.
测试:
m = MySchema(float_value=float('nan'))
输出:
pydantic.error_wrappers.ValidationError: 1 validation error for MySchema
float_value
ensure this value is greater than or equal to -inf (type=value_error.number.not_ge; limit_value=-inf)