Python中如何让Decimal对象输出为纯数值而非Decimal('num')格式
问题描述
执行以下Python代码:
from decimal import Decimal num = Decimal(171.33334060048446) json_dict = { "num": num } print(json_dict)
实际输出:
{'num': Decimal('171.33334060048446190194226801395416259765625')}
期望输出:
{'num': 171.33334060048446190194226801395416259765625}
尝试将num转为字符串,但无法去除字典中数值前后的引号,请问如何实现该需求?
解决方案
这里提供几种实用的处理方式:
方法1:手动构造目标格式字符串
直接跳过字典默认的打印逻辑,自己拼接符合要求的输出内容:
from decimal import Decimal num = Decimal(171.33334060048446) json_dict = {"num": num} # 用f-string拼接成期望的格式,注意大括号要转义 output = f"{{'num': {num}}}" print(output)
运行后就能直接得到不带Decimal()包裹和引号的数值输出。
方法2:提取Decimal的纯数值字符串再拼接
如果已经把num转成了字符串,直接取Decimal对象的原始数值字符串(本身不带引号),再构造输出:
from decimal import Decimal num = Decimal(171.33334060048446) num_str = str(num) # 得到的是不带引号的数值字符串 json_dict = {"num": num_str} # 手动拼接避免字典默认给字符串加引号 output = f"{{'num': {json_dict['num']}}}" print(output)
方法3:自定义Decimal子类(一劳永逸)
如果需要频繁输出这种格式,可以继承Decimal重写__repr__方法,让打印时直接输出纯数值:
from decimal import Decimal class PlainDecimal(Decimal): def __repr__(self): return str(self) num = PlainDecimal(171.33334060048446) json_dict = {"num": num} print(json_dict) # 直接输出期望格式:{'num': 171.33334060048446190194226801395416259765625}
内容的提问来源于stack exchange,提问作者ohnodev
相关产品推荐
相关产品推荐

