如何在Python 3.X中将数字缩写为1k、1m等格式?
实现数字的千/百万量级缩写格式
你需要的是将大数字转换为带k(千)、m(百万)等量级缩写的格式,而"{:,}"是Python格式化字符串中仅用于添加千分位逗号的专用语法,无法直接替换成其他字符,所以会报错。以下是两种实用的实现方式:
基础实现(保留一位小数)
这个函数会根据数字大小自动匹配对应的量级缩写,小于1000的数字直接返回原数:
def format_number(num): # 定义量级与对应缩写:十亿(b)、百万(m)、千(k) magnitudes = [(1_000_000_000, 'b'), (1_000_000, 'm'), (1_000, 'k')] for magnitude, suffix in magnitudes: if abs(num) >= magnitude: return f"{num / magnitude:.1f}{suffix}" return str(num) # 测试 print(format_number(1000)) # 输出 1.0k print(format_number(2500000)) # 输出 2.5m print(format_number(750)) # 输出 750
优化实现(自动去除末尾.0)
如果希望整数量级的数字显示为1k而非1.0k,可以调整逻辑:
def format_number(num): magnitudes = [(1_000_000_000, 'b'), (1_000_000, 'm'), (1_000, 'k')] for magnitude, suffix in magnitudes: if abs(num) >= magnitude: value = num / magnitude # 整数结果去掉小数部分,非整数保留一位小数 return f"{int(value)}{suffix}" if value.is_integer() else f"{value:.1f}{suffix}" return str(num) # 测试 print(format_number(1000)) # 输出 1k print(format_number(1500)) # 输出 1.5k print(format_number(1000000)) # 输出 1m
内容的提问来源于stack exchange,提问作者vlone
相关产品推荐
相关产品推荐

