由于怀疑开发人员之间的平台差异,
json.dump
正在以不同的方式格式化科学记数法(一个人的机器上,它格式化为1e-6
,而在其他人的机器上,它格式化为1e-06
)。这些文件已提交到我们的 git 历史记录中,因此必须不断地恢复更改很烦人。
有没有办法控制科学数字的格式?
导入json
类 CustomJSONEncoder(json.JSONEncoder): def 编码(自身,obj): 返回 super().encode(self._convert(obj))
def _convert(self, obj):
if isinstance(obj, float):
return format(obj, '.6e') # Consistent scientific notation
elif isinstance(obj, dict):
return {k: self._convert(v) for k, v in obj.items()}
elif isinstance(obj, list):
return [self._convert(v) for v in obj]
return obj
数据={ “值1”:0.000001, “值2”:1e-6, “嵌套”:{“值3”:1e-6} }
打开(“output.json”,“w”)作为f: json.dump(数据, f, cls=CustomJSONEncoder)