You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否修改format参数使Python humanize.naturalsize输出1M、1.01M格式?

解决humanize.naturalsize()去除小数末尾零的问题

直接修改format变量的格式字符串无法实现需求,因为%.2f这类固定格式符会强制保留指定位数的小数,没办法自动去除末尾的零。不过可以通过自定义格式化函数来达成目标,具体实现如下:

import humanize

def custom_format(num):
    # 先格式化为两位小数,再去除末尾的零和多余的小数点
    formatted = "{0:.2f}".format(num)
    return formatted.rstrip('0').rstrip('.') if '.' in formatted else formatted

raw1 = 1_048_576
raw2 = 1_058_576

print(humanize.naturalsize(raw1, format=custom_format, gnu=True))
print(humanize.naturalsize(raw2, format=custom_format, gnu=True))

运行代码后,输出结果为:

1M
1.01M

原理说明

  • 自定义的custom_format函数先将数值格式化为两位小数的字符串;
  • 利用rstrip('0')移除末尾的零,再通过rstrip('.')去掉零被移除后可能残留的小数点;
  • 将这个函数传递给naturalsize的format参数,就能实现自动去除小数末尾零的效果。

内容的提问来源于stack exchange,提问作者Damn Vegetables

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:43:21