如何避免 mjson.tool 中的实数转换

Posted

技术标签:

【中文标题】如何避免 mjson.tool 中的实数转换【英文标题】:How to avoid real numbers conversions in mjson.tool 【发布时间】:2015-11-26 09:14:53 【问题描述】:

我发现 mjson.tool 使用科学计数法转换实数,例如:

$ echo '"k":0.000000581' | python -mjson.tool

    "k": 5.81e-07

但是,我想避免这种转换,所以前者打印为:


    "k": 0.000000581

请问可以这样使用mjson.tool吗?

【问题讨论】:

@soon,你是对的......我已经修复了我的帖子(令人惊讶的是,mjson.tool 没有抱怨:) 【参考方案1】:

据我所知,mjson 模块只是将输入转换为 json 并返回到带有缩进和排序键的字符串。

这可以通过:

>>> json.dumps(json.loads('"k":0.000000581', indent=2, sort_keys=True))
'"k": 5.81e-07'

为避免使用科学符号,请参阅@Veedrac 对此主题的回答:https://***.com/a/18936966/956660


编辑:任何只重新格式化而不尝试解析/转换类型的工具都可以工作。

我试过yajl-tools

user$ sudo apt-get install yajl-tools
user$ echo '"a": 0.0000000000000001337' | json_pp 

   "a" : 1.337e-16

user$ echo '"a": 0.0000000000000001337' | json_reformat

    "a": 0.0000000000000001337

【讨论】:

谢谢!我正在尝试解决“shell 空间”的问题(可能是 mjson.tool 调用的一些参数?),但在这种情况下,您对“Python 空间”解决方案的反馈不可能非常有价值。

以上是关于如何避免 mjson.tool 中的实数转换的主要内容,如果未能解决你的问题,请参考以下文章

如何避免大数的科学记数法?

vim 格式化 json 字符串

vim 格式化 json 字符串

vim 格式化 json 字符串

vim 格式化 json 字符串

vim 格式化 json 字符串